Ryanus commited on
Commit
c3169a7
·
verified ·
1 Parent(s): bdb3c1a

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +120 -0
app.py ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from TTS.api import TTS
3
+ import gradio as gr
4
+ import os
5
+ import tempfile
6
+
7
+ # 檢查是否有 CUDA 可用,否則使用 CPU
8
+ device = "cuda" if torch.cuda.is_available() else "cpu"
9
+ print(f"使用設備: {device}")
10
+
11
+ # 初始化 TTS 模型
12
+ # 這裡我們使用 XTTS-v2 模型。
13
+ # 首次運行時,模型會自動下載。
14
+ # 請注意:XTTS-v2 在 CPU 上的推理速度會非常慢!
15
+ try:
16
+ tts = TTS(model_name="tts_models/multilingual/multi-dataset/xtts_v2", progress_bar=True).to(device)
17
+ print("Coqui TTS XTTS-v2 模型已成功載入。")
18
+ except Exception as e:
19
+ print(f"載入 Coqui TTS XTTS-v2 模型時發生錯誤: {e}")
20
+ print("請確保你的網路連接正常,並且模型名稱正確。")
21
+ exit()
22
+
23
+ # XTTS-v2 支援的語言列表
24
+ # 這些是模型訓練時支援的語言,你可以根據需要增減。
25
+ # 這裡列出一些常見的語言代碼。
26
+ SUPPORTED_LANGUAGES = [
27
+ "en", # English
28
+ "zh-cn", # Chinese (Simplified)
29
+ "es", # Spanish
30
+ "fr", # French
31
+ "de", # German
32
+ "it", # Italian
33
+ "pt", # Portuguese
34
+ "pl", # Polish
35
+ "ru", # Russian
36
+ "ja", # Japanese
37
+ "ko", # Korean
38
+ "ar", # Arabic
39
+ "hi", # Hindi
40
+ "tr", # Turkish
41
+ "nl", # Dutch
42
+ "sv", # Swedish
43
+ "da", # Danish
44
+ "fi", # Finnish
45
+ "no", # Norwegian
46
+ "cs", # Czech
47
+ "hu", # Hungarian
48
+ "el", # Greek
49
+ "uk", # Ukrainian
50
+ "vi", # Vietnamese
51
+ "th", # Thai
52
+ "id", # Indonesian
53
+ "ms", # Malay
54
+ "ro", # Romanian
55
+ "sk", # Slovak
56
+ "hr", # Croatian
57
+ "bg", # Bulgarian
58
+ "ca", # Catalan
59
+ "fa", # Persian
60
+ "he", # Hebrew
61
+ "ur", # Urdu
62
+ "bn", # Bengali
63
+ "gu", # Gujarati
64
+ "kn", # Kannada
65
+ "ml", # Malayalam
66
+ "mr", # Marathi
67
+ "pa", # Punjabi
68
+ "ta", # Tamil
69
+ "te", # Telugu
70
+ ]
71
+
72
+
73
+ def generate_speech(text, language):
74
+ """
75
+ 根據輸入文字和語言生成語音。
76
+ 對於 XTTS-v2,需要指定語言。
77
+ 此版本不包含語音克隆 (speaker_wav) 功能。
78
+ """
79
+ if not text:
80
+ return None, "請輸入一些文字!"
81
+ if not language:
82
+ return None, "請選擇一個語言!"
83
+
84
+ output_file = None
85
+ try:
86
+ # 創建一個臨時檔案來保存生成的音訊
87
+ with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp:
88
+ output_file = fp.name
89
+
90
+ # XTTS-v2 需要指定語言
91
+ # 如果沒有提供 speaker_wav,模型會使用其內建的預設語音來合成。
92
+ tts.tts_to_file(text=text, language=language, file_path=output_file)
93
+
94
+ return output_file, "語音生成成功!"
95
+ except Exception as e:
96
+ print(f"生成語音時發生錯誤: {e}")
97
+ if output_file and os.path.exists(output_file):
98
+ os.remove(output_file) # 清理臨時檔案
99
+ return None, f"生成語音失敗: {e}"
100
+
101
+ # Gradio 介面
102
+ iface = gr.Interface(
103
+ fn=generate_speech,
104
+ inputs=[
105
+ gr.Textbox(lines=5, label="輸入文字", placeholder="請在這裡輸入你想要轉換成語音的文字..."),
106
+ gr.Dropdown(choices=SUPPORTED_LANGUAGES, label="選擇語言", value="en"), # 預設為英文
107
+ ],
108
+ outputs=[
109
+ gr.Audio(label="生成的語音", type="filepath"),
110
+ gr.Textbox(label="狀態")
111
+ ],
112
+ title="Coqui TTS XTTS-v2 語音生成 (CPU)",
113
+ description="在 Hugging Face Space 上使用 Coqui TTS XTTS-v2 模型將文字轉換為語音。此演示使用 CPU 運行,請注意 XTTS-v2 在 CPU 上運行會非常慢。首次運行時會下載模型。",
114
+ allow_flagging="never",
115
+ )
116
+
117
+ # 啟動 Gradio 應用
118
+ if __name__ == "__main__":
119
+ iface.launch()
120
+