支持的引擎
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 官方网站
浏览官网,了解更多功能与使用范例.

