语音识别(ASR)
ASR 功能可以实时将音频识别成文字,并通过事件通知客户端。
在 Invite/Accept/Refer 命令的 CallOption 的 asr 字段中配置 ASR 功能, 分别对应呼叫、接听、转接的场景。
他们的格式是相同的,具体参见 TranscriptionOption。
支持的提供商
目前支持腾讯云、阿里云、Deepgram 和 VoiceApi 四种提供商。可以通过 provider 字段选择。
各模型和支持的语言不同,可查阅对应的文档:
参数
provider
选择 ASR 提供商。
tencent:腾讯云aliyun:阿里云voiceapi:VoiceApi
language
语言。用于阿里云提示语音使用哪种语言。 对应 api 的 language_hints 参数。
modelType
- 腾讯云:默认使用 16k_zh_en, 支持中文和英文。
- 阿里云:默认使用 paraformer-realtime-v2,支持中文、英文、日语、韩语、德语、法语、俄语
samplerate
采样率。单位:Hz。
- 腾讯云:默认 16000, 需要和模型设置同样的数值, 比如 16k_zh_en 对应的采样率是 16000。
- 阿里云:默认 16000, 只有
paraformer-realtime-v2支持自定义采样率, 其他模型是固定数值。
注意
采样率需要配置和 Track 采样率相同:
- SIP 呼叫默认为 16000hz
- WebRTC 呼叫依据编解码器决定:
- G722 16000hz
- Opus 48000hz
- 其他 8000hz
endpoint
自定义服务端点 URL。
- 阿里云:默认
wss://dashscope.aliyuncs.com/api-ws/v1/inference。 - 腾讯云:默认
wss://asr.cloud.tencent.com/asr/v2/。
extra
提供商特定参数。依照供应商文档,extra 字段中使用相同的字段名。这些参数会直接传递给提供商。
startWhenAnswer
是否在接通后再请求 ASR 服务,默认为 false。启用后会忽略彩铃。
配置 API Key
API Key 可以在启动 RustPBX 时的环境变量中配置,也可以在参见 TranscriptionOption 中配置。
在环境变量中配置:
-
腾讯云:
TENCENT_APPID:腾讯云的 appIdTENCENT_SECRET_ID:腾讯云的 secretIdTENCENT_SECRET_KEY:腾讯云的 secretKey
-
阿里云:
DASHSCOPE_API_KEY: 阿里云大模型服务平台百炼的 API Key
-
Deepgram:
DEEPGRAM_API_KEY:Deepgram 的 API Key
在 TranscriptionOption 中配置:
腾讯云:
appId:腾讯云的 appIdsecretId:腾讯云的 secretIdsecretKey:腾讯云的 secretKey
其他提供商:
secretKey:提供商的 API Key
ASR 事件
RustPBX 会推送两种 ASR 事件:
- AsrDelta: 中间识别结果 (可能变动)
- AsrFinal: 最终识别结果 (稳定)
这两个事件的字段是相同的:
- trackId: 通话轨道 ID (在转接场景下,会有两条 Track)
- index: 识别结果序列号 (仅在腾讯云的 ASR 中有效)
- text: 识别结果文本
- timestamp: 事件时间戳
- startTime: 识别开始时间
- endTime: 识别结束时间