支援的引擎
1. 百度智能雲
- 引擎代碼:
baidu - 官網: https://cloud.baidu.com/
- 文檔: https://cloud.baidu.com/doc/SPEECH/index.html
2. 訊飛開放平台
- 引擎代碼:
xunfei - 官網: https://www.xfyun.cn/
- 文檔: https://www.xfyun.cn/doc/
3. 火山引擎
- 引擎代碼:
volcano - 官網: https://www.volcengine.com/
- 文檔: https://www.volcengine.com/docs/6561/79817
4. 阿里雲
- 引擎代碼:
aliyun - 官網: https://www.aliyun.com/
- 文檔: https://help.aliyun.com/product/30413.html
接入所需配置
百度智能雲
ASR(語音轉文字)
需要配置以下環境變數:SUPERUN_BAIDU_API_KEY- API KeySUPERUN_BAIDU_SECRET_KEY- Secret Key
TTS(文字轉語音)
需要配置以下環境變數:SUPERUN_BAIDU_API_KEY- API KeySUPERUN_BAIDU_SECRET_KEY- Secret Key
0- 度小宇(女)1- 度小美(男)3- 度逍遙(女)4- 度丫丫(男)
訊飛開放平台
ASR(語音轉文字)
需要配置以下環境變數:SUPERUN_XUNFEI_APP_ID- App IDSUPERUN_XUNFEI_API_KEY- API KeySUPERUN_XUNFEI_API_SECRET- API Secret
TTS(文字轉語音)
需要配置以下環境變數:SUPERUN_XUNFEI_APP_ID- App IDSUPERUN_XUNFEI_API_KEY- API KeySUPERUN_XUNFEI_API_SECRET- API Secret
xiaoyan- 訊飛小燕(女)xiaoyu- 訊飛小宇(男)xiaomei- 訊飛小美(女)xiaoqi- 訊飛小琪(男)
火山引擎
ASR(語音轉文字)
需要配置以下環境變數:SUPERUN_VOLCANO_APP_ID- App IDSUPERUN_VOLCANO_ACCESS_TOKEN- Access TokenSUPERUN_VOLCANO_SECRET_KEY- Secret Key(WebSocket 鑑權用)SUPERUN_VOLCANO_ASR_CLUSTER- ASR Cluster(可選,預設:volcengine_input_common)
TTS(文字轉語音)
需要配置以下環境變數:SUPERUN_VOLCANO_APP_ID- App IDSUPERUN_VOLCANO_ACCESS_TOKEN- Access Token
BV700_V2_streaming- 清新女聲BV001_V2_streaming- 通用男聲BV705_streaming- 甜美女聲BV701_V2_streaming- 醇厚男聲
阿里雲
ASR(語音轉文字)
需要配置以下環境變數:SUPERUN_ALIYUN_ACCESS_KEY_ID- Access Key IDSUPERUN_ALIYUN_ACCESS_KEY_SECRET- Access Key SecretSUPERUN_ALIYUN_APP_KEY- App Key
TTS(文字轉語音)
需要配置以下環境變數:SUPERUN_ALIYUN_ACCESS_KEY_ID- Access Key IDSUPERUN_ALIYUN_ACCESS_KEY_SECRET- Access Key SecretSUPERUN_ALIYUN_APP_KEY- App Key
aixia- 艾夏(女)aiwei- 艾偉(男)aida- 艾達(女)kenny- 肯尼(男)
配置方式
Supabase Edge Functions(生產環境)
在 Supabase 專案中配置環境變數:代碼實現架構
前端組件
ASR 模組(語音轉文字)
TTS 模組(文字轉語音)
引擎選擇器
後端實現(Supabase Edge Functions)
ASR 轉換服務
檔案位置:supabase/functions/asr-convert/index.ts
核心邏輯:
- 根據
engine參數選擇對應的引擎實現 - 從環境變數讀取對應的 API 憑證
- 調用各引擎的 ASR API
- 返回標準化的識別結果
TTS 轉換服務
檔案位置:supabase/functions/tts-convert/index.ts
核心邏輯:
- 根據
engine參數選擇對應的引擎實現 - 從環境變數讀取對應的 API 憑證
- 根據
voice參數映射到各引擎的音色代碼 - 調用各引擎的 TTS API
- 返回 base64 編碼的音頻數據
百度 ASR 常見錯誤及解決方案
錯誤碼 3311: param rate invalid
這是最常見的錯誤,原因通常是以下幾點:| 問題 | 解決方案 |
|---|---|
| Token 放置位置錯誤 | Token 必須放在請求體內,不要放在 URL 參數中 |
| cuid 重複 | cuid 只放請求體內,不要在 URL 中重複 |
| 使用 dev_pid | 不要使用 dev_pid 參數,讓百度自動檢測語言 |
| rate 類型錯誤 | 確保 rate 是 number 類型,不是 string |
| len 計算錯誤 | len 必須是 WAV 文件的實際字節數 |
正確的 len 參數計算
從 Base64 字符串計算實際字節數:前端音頻處理要點
1. 錄音格式
瀏覽器通常是 webm/opus:2. 必須重採樣到 16kHz(百度要求)
3. 轉換為 16bit PCM
4. 添加 WAV 頭(44 字節)
環境變數配置
在 Supabase Edge Function Secrets 中配置:調試檢查清單
遇到 3311 錯誤時,按順序檢查:- ✅ Token 是否在請求體內(不是 URL 參數)
- ✅ rate 是否是 number 類型(
typeof rate === 'number') - ✅ len 是否等於 WAV 文件實際大小
- ✅ 是否移除了 dev_pid 參數
- ✅ WAV 頭中的採樣率是否為 16000
- ✅ 音頻時長是否在 0.5-60 秒範圍內
完整請求示例
正確 ✓:技術要點
ASR(語音轉文字)
- 音頻格式統一: 所有引擎均使用 WAV 格式,16kHz 採樣率,單聲道
- Base64 編碼: 音頻數據在前端轉換為 base64 後傳遞到後端
- 協議差異:
- 百度,阿里雲:REST API
- 訊飛,火山引擎:WebSocket 協議
- 結果標準化: 統一返回
{ text, confidence, duration }格式
TTS(文字轉語音)
- 音色映射: 前端使用統一的音色 ID(
female_1,male_1等),後端映射到各引擎的實際音色代碼 - 參數轉換:
- 語速:前端範圍 0.5-2.0x,各引擎轉換為對應範圍
- 音量:前端範圍 0-100%,各引擎轉換為對應範圍
- 輸出格式: 所有引擎統一返回 MP3 格式的 base64 編碼音頻
- 協議差異:
- 百度,阿里雲,火山引擎:REST API
- 訊飛:WebSocket 協議(需要接收多個音頻塊)
測試建議
- API 憑證測試: 確保所有環境變數正確配置
- 音頻格式測試: 測試不同格式的音頻文件(WAV,MP3,M4A)
- 時長限制測試: 特別注意阿里雲的 60 秒限制
- 錯誤處理測試: 測試網絡錯誤,API 錯誤等異常情況
- 併發測試: 測試多個用戶同時使用不同引擎的情況
注意事項
- 費用控制: 各引擎都有各自的計費規則,注意監控 API 調用量
- 速率限制: 各引擎都有調用頻率限制,注意避免超限
- 音頻大小: 建議限制上傳音頻文件大小(如 10MB)
- 超時設置: WebSocket 連接設置合理的超時時間(如 30 秒)
- 錯誤日誌: 記錄詳細的錯誤信息,便於排查問題
superun 官方網站
瀏覽官網,了解更多功能與使用範例.

