|
|
import os |
|
|
import traceback |
|
|
|
|
|
|
|
|
import numpy as np |
|
|
import soundfile as sf |
|
|
import librosa |
|
|
|
|
|
from moyoyo_tts.tools.i18n.i18n import I18nAuto |
|
|
|
|
|
i18n = I18nAuto(language=os.environ.get('language', 'Auto')) |
|
|
|
|
|
def load_audio(file, sr): |
|
|
try: |
|
|
file = clean_path(file) |
|
|
if os.path.exists(file) == False: |
|
|
raise RuntimeError( |
|
|
"You input a wrong audio path that does not exists, please fix it!" |
|
|
) |
|
|
|
|
|
|
|
|
data, original_sr = sf.read(file, dtype='float32') |
|
|
|
|
|
|
|
|
if len(data.shape) > 1: |
|
|
data = np.mean(data, axis=1) |
|
|
|
|
|
|
|
|
if original_sr != sr: |
|
|
data = librosa.resample(data, orig_sr=original_sr, target_sr=sr) |
|
|
|
|
|
return data.flatten() |
|
|
|
|
|
except Exception as e: |
|
|
traceback.print_exc() |
|
|
raise RuntimeError(i18n("音频加载失败")) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def clean_path(path_str: str): |
|
|
if path_str.endswith(('\\', '/')): |
|
|
return clean_path(path_str[0:-1]) |
|
|
path_str = path_str.replace('/', os.sep).replace('\\', os.sep) |
|
|
return path_str.strip(" ").strip('\'').strip("\n").strip('"').strip(" ").strip("\u202a") |
|
|
|