我能够从Bing语音识别的REST API中获得简短的听写答案。我的目标是获得对超过15-30秒(又称长听写模式)的音频文件的响应。因此,为获得简短答案,我要做的是以下操作(我正在开发HTML uwp应用程序):
从音频文件生成ArrayBuffer
(wav)
通过访问令牌进行身份验证
使用以下设置将音频数据发送到REST API:
var accessToken = [[accessTocken]];
var url = 'https://speech.platform.bing.com/recognize?';
var params = {
'version': '3.0',
'format': 'json',
'locale': 'en-US',
'device.os': 'Windows OS',
'scenarios': 'smd',
'appid': 'D4D52672-91D7-4C74-8AD8-42B1D98141A5',
'requestid': guid(),
'instanceid': guid()
};
var options = {
url: url + $.param(params),
type: "POST",
headers: {
'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'audio/wav; samplerate=16000'
},
data: data
};
return WinJS.xhr(options);
这样就行了!但是,对于长的听写场景,我该怎么做呢?
请不要在https://github.com/microsoft/Cognitive-Speech-STT-Javascript处引用JavaScript GitHub存储库。这仅适用于短指令,并且在Edge浏览器中不起作用。
最佳答案
从API文档中:
您的应用程序必须终结音频以确定开始和结束
语音,然后由服务使用语音来确定开始
并结束请求。您上传的时间不得超过10秒
任一请求中的音频,并且总请求持续时间不能超过
14秒。
参考:
https://www.microsoft.com/cognitive-services/en-us/Speech-api/documentation/API-Reference-REST/BingVoiceRecognition
也许您需要实现客户端库以使用差异模式。
短句模式:发声时间最长为15秒。数据发送后
到服务器,客户端将收到多个部分结果,并且
最后的多个N最佳选择结果。
LongDictation模式:发声长达2分钟。数据发送后
到服务器,客户端将收到多个部分结果,并且
根据服务器指示句子的位置得出多个最终结果
停顿一下。
目的检测:服务器返回其他结构化信息
关于语音输入。要使用Intent,您需要先训练一个
模型。在这里查看详细信息。
参考:
https://www.microsoft.com/cognitive-services/en-us/Speech-api/documentation/GetStarted/GetStartedCSharpDesktop