audio_edit / examples /batch_audio_fmt_convert.py
HoneyTian's picture
update
ba051ef
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import argparse
import librosa
import numpy as np
from pathlib import Path
from fsspec.registry import default
from scipy.io import wavfile
from tqdm import tqdm
from project_settings import project_path
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--audio_dir",
# default=(project_path / "data/yd").as_posix(),
default=r"E:\牛信文档\语音克隆\多语种语音克隆\money_char",
type=str,
)
parser.add_argument(
"--output_dir",
# default=(project_path / "data/temp_wav").as_posix(),
default=r"E:\牛信文档\语音克隆\多语种语音克隆\money_char",
type=str,
)
args = parser.parse_args()
return args
def main():
args = get_args()
audio_dir = Path(args.audio_dir)
output_dir = Path(args.output_dir)
output_dir.mkdir(parents=True, exist_ok=True)
max_wave_value = 32768.0
for filename in tqdm(audio_dir.glob("**/*.wav")):
basename = filename.stem
relative_dir = filename.parent.relative_to(audio_dir)
signal, sample_rate = librosa.load(filename, sr=8000)
# print(signal.shape)
# print(signal.dtype)
# exit(0)
signal *= max_wave_value
signal = np.array(signal, dtype=np.int16)
output_filename = output_dir / relative_dir / f"{basename}.wav"
output_filename.parent.mkdir(parents=True, exist_ok=True)
wavfile.write(
output_filename.as_posix(),
8000,
signal,
)
return
if __name__ == "__main__":
main()