Azure Speech-to-text显式标点识别失效问题咨询(附代码)
问题原因与解决方案
问题原因
- 配置传递渠道错误:当使用
OutputFormat.Detailed时,punctuation参数通过ServicePropertyChannel.UriQueryParameter传递无法生效,Azure Speech服务在Detailed输出模式下,需要通过ServicePropertyChannel.ServiceJson渠道接收标点配置。 - 默认行为覆盖:未正确配置时,服务会默认将语音中的“问号”“句号”转换为符号,而非保留文本表述。
解决方案
1. 修正SpeechConfig的标点配置渠道
修改标点启用逻辑中的SetServiceProperty调用,将传递渠道改为ServicePropertyChannel.ServiceJson:
SpeechConfig config = SpeechConfig.FromSubscription("key", "region"); config.OutputFormat = OutputFormat.Detailed; if (Properties.Settings.Default.Punctuation) { // 替换渠道为ServiceJson,确保Detailed模式下配置生效 config.SetServiceProperty("punctuation", "explicit", ServicePropertyChannel.ServiceJson); } recognizer = new SpeechRecognizer(config); recognizer.Recognized += SpeechRecognizer_Recognized; // 修正原代码中的语法错误
注:原代码中
recognizer. Recognizer. Recognizedecognizer_Recognized;为语法错误,需修正为正确的事件绑定写法。
2. 验证结果输出逻辑
配置修正后,bestResults.Words中的项会正确返回“问号”“句号”等文本,而非符号。原有的遍历输出逻辑可直接使用,无需额外修改。
额外检查点
- 确认订阅密钥和区域配置正确,避免因权限或区域不支持导致功能失效。
- 确保语音输入清晰,无背景噪音干扰识别精度。
内容的提问来源于stack exchange,提问作者Babar Ali
相关产品推荐
相关产品推荐

