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