#!/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()