Watson Speech to Text 无法对数据流音频/wav 进行转码

Posted

技术标签:

【中文标题】Watson Speech to Text 无法对数据流音频/wav 进行转码【英文标题】:Watson Speech to Text unable to transcode data stream audio/wav 【发布时间】:2017-09-06 12:47:45 【问题描述】:

我正在使用 IBM Watson Speech to Text API:

var SpeechToTextV1 = require('watson-developer-cloud/speech-to-text/v1');
var fs = require('fs');
var request = require('request');

var speech_to_text = new SpeechToTextV1(
  "username": "<user name>",
  "password": "<password>"
);

var recognizeStream = speech_to_text.createRecognizeStream();

// request(wavfileURL).pipe(recognizeStream);
// recognizeStream.on('results', function(err, res)
//     console.dir(err)
//     console.dir(res)
//     if (res.results)
//         console.dir(res.results)
//     
//
// );
request.get(wavfileURL, function (err, res, buffer) 
  var streamer = require('streamifier');
  var params = 
    // From file
    audio: streamer.createReadStream(buffer) ,
    content_type: 'audio/wav; rate=44100'
  ;

  speech_to_text.recognize(params, function(err, res) 
    debugger;
    if (err)
      console.log("ERR:",err);
    else 
      console.log("NOT ERR");
      console.log(JSON.stringify(res, null, 2));
      console.dir(res);
    
  );
);

我用下面的 WAV 文件 https://s3.amazonaws.com/buzzy-audio/adam.ginsburg%40gmail.com/vNixvnC4Xscu8yZ98 调用它

我收到以下错误:

> ERR:  [Error: unable to transcode data stream audio/wav ->
> audio/x-float-array ] I20170411-18:23:40.576(10)?   code: 400,
> I20170411-18:23:40.576(10)?   code_description: 'Bad Request',
> I20170411-18:23:40.577(10)?   error: 'unable to transcode data stream
> audio/wav -> audio/x-float-array ' 

内容类型的采样率似乎正确:

有什么想法吗?

【问题讨论】:

@german 只是检查编辑...只是几个空格...还是我错过了什么? 代码缩进多为 在 api 文档中说,不活动超时可能导致错误 400。“如果在 inactivity_timeout 秒的音频中未检测到语音(未处理),服务器也会关闭连接(响应代码 400) time);使用 inactivity_timeout 参数更改默认值 30 秒。" 关于你的问题@aginsburg,我会尝试看看我是否可以让它工作,但我 99% 确定它与 s3 返回的content-typecontent-length 有关。我敢打赌,您可以将文件保存在临时文件夹中,然后将其发送到语音到文本。在这种情况下,您需要确保可以覆盖要发送到 STT 的标头,并且它们与 API 的预期相匹配。 我遇到了来自 Twilio 的录音问题,您解决了这个问题吗? 【参考方案1】:

这是由于 watson 认为您尝试上传的音频文件不是音频文件,因此为了保护自己免受有害文件的影响,它会引发异常

官方解释:link

损坏的文件:file byte code altered(下载前扫描)

【讨论】:

以上是关于Watson Speech to Text 无法对数据流音频/wav 进行转码的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 中的 Watson Text to Speech 的授权问题

将 WAV 录制到 IBM Watson Speech-To-Text

IBM Watson JavaScript SDK for Speech-To-Text WebSocket 问题

Watson Speech to Text API 中不返回说话者标签/分类

如何提高 Watson Speech to Text 的准确性?

Flite Text to Speech 无法正常工作