Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -7,7 +7,9 @@ import librosa
|
|
7 |
import torchaudio
|
8 |
from scipy.signal import resample
|
9 |
import time
|
10 |
-
|
|
|
|
|
11 |
|
12 |
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
|
13 |
sys.path.append(f'{ROOT_DIR}/third_party/Matcha-TTS')
|
@@ -15,29 +17,31 @@ sys.path.append(f'{ROOT_DIR}/third_party/Matcha-TTS')
|
|
15 |
from cosyvoice.cli.cosyvoice import CosyVoice
|
16 |
from cosyvoice.utils.file_utils import load_wav
|
17 |
|
18 |
-
def
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
)
|
|
|
|
|
24 |
|
25 |
preset_speakers = {
|
26 |
"6歲": {
|
27 |
-
"
|
28 |
"transcription": "名字是微笑號,只是呢你們看,這一輛微笑號它這裡有寫八百型的喔,它是八百山出來"
|
29 |
},
|
30 |
"8歲": {
|
31 |
-
"
|
32 |
"transcription": "出來了出來了,你知道這個餐具是可以挖的,這個餐具可以用窩課魅一起挖嗎?"
|
33 |
}
|
34 |
}
|
35 |
|
36 |
def apply_preset(speaker_key):
|
37 |
if speaker_key in preset_speakers:
|
38 |
-
|
39 |
transcription = preset_speakers[speaker_key]["transcription"]
|
40 |
-
local_path =
|
41 |
return local_path, transcription
|
42 |
return None, ""
|
43 |
|
@@ -107,9 +111,8 @@ with gr.Blocks() as demo:
|
|
107 |
gr.Markdown("""
|
108 |
# 小睿語音合成
|
109 |
選擇預設語音 (6歲、8歲) 或上傳5~15秒語音樣本及該則語音樣本的轉寫,並輸入要合成的句子。
|
110 |
-
|
111 |
視該時段運算資源和語句長度而定約需70至2000秒,若等候時間過長,可改用較快但較不穩的版本:
|
112 |
-
https://colab.research.google.com/drive/
|
113 |
""")
|
114 |
|
115 |
speaker_selector = gr.Dropdown(
|
|
|
7 |
import torchaudio
|
8 |
from scipy.signal import resample
|
9 |
import time
|
10 |
+
import requests
|
11 |
+
|
12 |
+
from huggingface_hub import snapshot_download
|
13 |
|
14 |
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
|
15 |
sys.path.append(f'{ROOT_DIR}/third_party/Matcha-TTS')
|
|
|
17 |
from cosyvoice.cli.cosyvoice import CosyVoice
|
18 |
from cosyvoice.utils.file_utils import load_wav
|
19 |
|
20 |
+
def download_audio_from_drive(file_id, save_path="temp_prompt.wav"):
|
21 |
+
url = f"https://drive.google.com/uc?export=download&id={file_id}"
|
22 |
+
response = requests.get(url)
|
23 |
+
if not response.ok or b"<html" in response.content[:100]:
|
24 |
+
raise RuntimeError("Google Drive 音檔下載失敗")
|
25 |
+
with open(save_path, "wb") as f:
|
26 |
+
f.write(response.content)
|
27 |
+
return save_path
|
28 |
|
29 |
preset_speakers = {
|
30 |
"6歲": {
|
31 |
+
"file_id": "1PomN05sTjxXBR3q5kOgB7CUEpig2HJmx",
|
32 |
"transcription": "名字是微笑號,只是呢你們看,這一輛微笑號它這裡有寫八百型的喔,它是八百山出來"
|
33 |
},
|
34 |
"8歲": {
|
35 |
+
"file_id": "1U1DKzN_BsU-DL02HZIRlx-opUJLhaQ41",
|
36 |
"transcription": "出來了出來了,你知道這個餐具是可以挖的,這個餐具可以用窩課魅一起挖嗎?"
|
37 |
}
|
38 |
}
|
39 |
|
40 |
def apply_preset(speaker_key):
|
41 |
if speaker_key in preset_speakers:
|
42 |
+
file_id = preset_speakers[speaker_key]["file_id"]
|
43 |
transcription = preset_speakers[speaker_key]["transcription"]
|
44 |
+
local_path = download_audio_from_drive(file_id)
|
45 |
return local_path, transcription
|
46 |
return None, ""
|
47 |
|
|
|
111 |
gr.Markdown("""
|
112 |
# 小睿語音合成
|
113 |
選擇預設語音 (6歲、8歲) 或上傳5~15秒語音樣本及該則語音樣本的轉寫,並輸入要合成的句子。
|
|
|
114 |
視該時段運算資源和語句長度而定約需70至2000秒,若等候時間過長,可改用較快但較不穩的版本:
|
115 |
+
https://colab.research.google.com/drive/1aQSLwzbK9QnNMH4A5eVfqFYfPFXHwlXx?usp=sharing
|
116 |
""")
|
117 |
|
118 |
speaker_selector = gr.Dropdown(
|