我能够从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

09-30 13:20
查看更多