今天很高興看到Qwen-TTS開源。試一試四川方言(大概是成都版)效果如何。本人無法判斷、有興趣的伙伴可以幫忙聽一聽。
四川方言TTS
"胖娃胖嘟嘟,騎馬上成都,成都又好耍。胖娃騎白馬,白馬跳得高。胖娃耍關刀,關刀耍得圓。胖娃吃湯圓。"
"他一輩子的使命就是不停地爬喲,爬到大海頭上去,不管有好多遠!"
"今天天氣巴適得很,我們一起去吃火鍋嘛!那個味道簡直不擺了,安逸得很!"
"老鄉,你從哪兒來嘛?要不要一起擺龍門陣?"
引言
近年來,AI 語音合成(Text-to-Speech, TTS)技術飛速發展,已經從"能聽懂"進化到"能聽出情感、方言和個性"。阿里云 Qwen-TTS(通義千問語音合成)是國內首批支持多種中文方言(包括四川話、上海話、京片子)和中英雙語的高質量 TTS 模型之一。本文將以四川話為例,帶你從 API Key 獲取、環境配置、代碼實現、到常見問題排查,完整體驗 Qwen-TTS 的技術魅力。
一、Qwen-TTS 簡介與技術亮點
Qwen-TTS 是阿里云 DashScope 平臺推出的高自然度、強表現力的語音合成模型。目前已支持四川話、上海話、京片子等,未來將擴展更多方言和語言7 種中英雙語聲音,適合多場景應用。自動根據文本調整語調、節奏、情感色彩,媲美真人朗讀。通過 DashScope API 快速集成,支持 Python、RESTful 等多種調用方式。在 SeedTTS-Eval 等權威基準上達到人類水平的自然度和相似度。
官方博客與樣例:https://qwenlm.github.io/blog/qwen-tts/
二、DashScope API Key 獲取全流程
1. 注冊并登錄阿里云 DashScope
- 訪問 DashScope 官網
- 使用阿里云賬號注冊/登錄(支持手機號、郵箱、企業賬號等)
2. 進入 API Key 管理頁面
- 登錄后,點擊右上角頭像,進入"控制臺"或"API Key 管理"
- 找到"API Key"或"密鑰管理"入口
3. 創建并獲取 API Key
- 點擊"創建 API Key"或"生成新密鑰"
- 通過手機/郵箱二次驗證
- 復制生成的 API Key(注意:只顯示一次,務必保存)
API Key 格式示例:
sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
注意:必須以
sk-
開頭,否則不是 DashScope 的 TTS API Key(如LTAI...
開頭的是阿里云 Access Key,不能用于 Qwen-TTS)。
4. 安全保存 API Key
- 建議保存到密碼管理器或安全筆記
- 切勿公開或上傳到代碼倉庫
三、環境配置與依賴安裝
1. 克隆或下載項目
假設你已獲得本文配套的 Qwen-TTS 四川話演示項目(或參考下方代碼結構自行創建):
csdn/
└── qwen-tts/├── qwen_tts_sichuan_demo.py├── requirements.txt├── test_setup.py├── config.py├── env_example.txt└── output/ # 運行后自動生成
2. 安裝依賴
進入 qwen-tts
目錄,安裝依賴:
cd qwen-tts
pip install -r requirements.txt
依賴說明:
dashscope
:阿里云 DashScope Python SDKrequests
:網絡請求庫pygame
:音頻播放(可選)python-dotenv
:支持 .env 文件加載 API Key
3. 配置 API Key
推薦方式:使用 .env 文件
- 復制示例文件并編輯
cp env_example.txt .env nano .env
- 填寫你的 API Key(必須以
sk-
開頭):DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
可選方式:環境變量
export DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
四、代碼實現與運行流程
1. 主要代碼結構說明
qwen_tts_sichuan_demo.py
主要實現了以下功能:
- 自動加載
.env
文件或環境變量中的 API Key - 支持多條四川話示例文本合成
- 自動創建輸出目錄,保存音頻文件
- 可選實時播放合成音頻
- 詳細的錯誤處理與用戶提示
核心代碼片段:
from dotenv import load_dotenv
import osdef _load_env_file(self):# 優先加載腳本目錄下的 .envscript_dir = Path(__file__).parentenv_path = script_dir / ".env"if env_path.exists():load_dotenv(env_path)# 也可向上查找# ...def _get_api_key(self):self._load_env_file()api_key = os.getenv("DASHSCOPE_API_KEY")if not api_key or not api_key.startswith("sk-"):raise EnvironmentError("請正確配置 DashScope API Key(以 sk- 開頭)")return api_key
response = dashscope.audio.qwen_tts.SpeechSynthesizer.call(model=self.model,api_key=self.api_key,text=text,voice=self.voice,)
try:pygame.mixer.init()pygame.mixer.music.load(audio_path)pygame.mixer.music.play()# Wait for audio to finishwhile pygame.mixer.music.get_busy():time.sleep(0.1)except Exception as e:print(f"? Audio playback failed: {e}")finally:pygame.mixer.quit()
filename = f"sichuan_sample_{i:02d}.wav"audio_path = self.synthesize_speech(sample['text'], filename)
2. 運行演示腳本
推薦先運行測試腳本:
python test_setup.py
- 檢查依賴、API Key、網絡、目錄等
- 若有問題會給出詳細修復建議
🔑 Testing API key...
? API key found using environment variable: DASHSCOPE_API_KEYKey starts with: LTAI5tJU...
?? API key doesn't start with 'sk-'. This might not be a valid DashScope API key.📁 Testing directories...
? Output directory ready: /Users/zlu/projects/csdn/qwen-tts/output🌐 Testing network connectivity...
? Network connectivity OK📊 Test Summary
========================================
Imports ? PASS
Environment File ? PASS
API Key ? PASS
Directories ? PASS
Network ? PASSResults: 5/5 tests passed
🎉 All tests passed! You're ready to run the demo.
正式運行四川話合成演示:
python qwen_tts_sichuan_demo.py
📄 Loading environment from: /Users/zlu/projects/csdn/qwen-tts/.env
? API key loaded successfully (starts with: sk-c4021...)
🎭 Qwen-TTS Sichuan Dialect Demo
==================================================
Model: qwen-tts-latest
Voice: Sunny (Sichuan dialect)
Output directory: output📝 Sample 1: Traditional Sichuan Rhyme
Description: A traditional Sichuan children's rhyme about a chubby child
Text: 胖娃胖嘟嘟,騎馬上成都,成都又好耍。胖娃騎白馬,白馬跳得高。胖娃耍關刀,關刀耍得圓。胖娃吃湯圓。
----------------------------------------
🎤 Synthesizing: 胖娃胖嘟嘟,騎馬上成都,成都又好耍。胖娃騎白馬,白馬跳得高。胖娃耍關刀,關刀耍得圓。胖娃吃湯圓。...
📥 Downloading audio from: http://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/1d/2d/20250701/b02dd599/8df4ea6c-b22a-41ab-8b9e-2e659b3590e8.wav?Expires=1751419905&OSSAccessKeyId=LTAI5tKPD3TMqf2Lna1fASuh&Signature=%2FPm1kfFEwfDmmdDsEeriPIMdJO4%3D
? Audio saved to: output/sichuan_sample_01.wav
🎵 Play audio? (y/n): y
🔊 Playing audio...
? Audio playback completed
3. 交互與輸出
- 程序會依次合成多條四川話文本(如童謠、日常對話、方言故事等)
- 合成音頻保存在
output/
目錄 - 若安裝了
pygame
,可選擇實時播放音頻 - 運行結束后會輸出所有生成的音頻文件路徑
五、常見問題與排查
1. API Key 格式錯誤
報錯示例:
?? Warning: API key doesn't start with 'sk-'. This might not be a valid DashScope API key.
? Demo failed: Invalid API key
解決方法:
- 確認 API Key 來源于 DashScope 控制臺
- 必須以
sk-
開頭,不能用阿里云 Access Key
2. 找不到 .env 文件
現象:
- 明明
.env
在qwen-tts/
,但程序提示找不到
原因:
- 你可能在項目根目錄運行腳本(
python qwen-tts/qwen_tts_sichuan_demo.py
),此時當前目錄是csdn/
,而不是qwen-tts/
.env
只會在當前目錄或父目錄查找
解決方法:
- 推薦將
.env
放到項目根目錄(csdn/
) - 或者進入
qwen-tts/
目錄再運行腳本:cd qwen-tts python qwen_tts_sichuan_demo.py
3. 輸出目錄不存在
報錯示例:
? Demo failed: [Errno 2] No such file or directory: 'qwen-tts/output'
解決方法:
- 手動創建輸出目錄:
mkdir -p qwen-tts/output
- 或確保代碼自動創建目錄(本項目已支持)
4. 網絡或依賴問題
- 檢查網絡是否可訪問外網
- 確認已安裝所有依賴(
pip install -r requirements.txt
)
六、進階玩法與最佳實踐
1. 擴展更多方言與自定義文本
- 可在
config.py
或主腳本中添加更多四川話/其他方言文本 - 支持自定義輸出文件名、批量合成
2. 集成到 Web/移動應用
- Qwen-TTS 支持 RESTful API,可與 Flask、FastAPI、Django 等后端集成
- 也可用于小程序、App 的語音播報
3. 性能與費用
- DashScope 提供免費額度,超出后按量計費
- 建議先在免費額度內測試,量大可申請企業套餐
4. 安全與合規
- API Key 切勿上傳到公開倉庫
- 可用
.gitignore
忽略.env
文件
七、Qwen-TTS 技術原理簡述
- 大規模語音數據訓練:覆蓋多方言、多場景
- Transformer 架構:支持高質量韻律與情感建模
- 多說話人/多風格:可選不同性別、年齡、方言的聲音
- 自動韻律調整:根據文本內容智能斷句、重音、語速
- API 設計:支持文本、說話人、風格等多參數定制
八、結語與展望
Qwen-TTS 讓高質量中文方言語音合成變得觸手可及。無論你是開發者、AI 研究者,還是方言文化愛好者,都可以通過簡單的 API 和開源代碼,體驗到四川話、上海話、京片子等地道方言的數字化魅力。未來,隨著模型能力和數據的不斷提升,Qwen-TTS 有望支持更多方言、情感和應用場景,助力中文語音 AI 生態繁榮。
參考鏈接
- Qwen-TTS 官方博客
- DashScope 控制臺
- DashScope 文檔
- Qwen GitHub
- SeedTTS-Eval Benchmark
歡迎留言交流你的體驗與問題,也歡迎 PR 豐富更多方言和應用場景!