读取本地音频文件STT Google语音到文本

时间:2018-06-24 12:15:16

标签: json curl command-line speech google-speech-api

我找不到在curl命令行中如何使用Google STT发送本地文件的方法。 就像他们的tuto一样,这里是我的request.json:

{
"config": {
      "encoding":"FLAC",
      "sample_rate": 16000,
      "language_code": "fr-FR"
  },
  "audio": {
      "uri":"audio-file.flac"
  }
}

我的命令行是:

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=MY_API_KEY"

但是我收到错误结果:

{
  "error": {
    "code": 400,
    "message": "RecognitionAudio not set.",
    "status": "INVALID_ARGUMENT"
  }
}

如何编写request.json以发送本地音频文件? 感谢帮助 :)

2 个答案:

答案 0 :(得分:0)

您需要在request.json文件的内容部分中使用base64。除了更多的base64数据外,它看起来应该像这样:

{
  'config': {
    "encoding":"FLAC",
    "sample_rate": 16000,
    "language_code": "fr-FR"
  },
  'audio': {
    'content':'UklGRuRDFQBXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YcBDFQAIAAgACAAIAAgA
CAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgA
CAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgA
CAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD4/wgACAD4//j/+P8IAPj/+P8IAAgA
+P8IAAgACAAIAAgA+
'
  }
}

答案 1 :(得分:0)

Google在使用curl命令时未提供在json对象中指定本地文件路径的选项。我们需要将音频文件转换为base64并将输出传递到json对象

 base64 source_audio_file -w 0 > dest_base64_audio_file_content

或者传递本地文件的最佳方法之一是使用 gcloud ml命令

gcloud ml speech recognize 'Clip48_Mike.wav' --language-code='en-US'  

示例: enter image description here

注意: 如果尚未完成,请执行以下命令激活gcloud帐户。

gcloud auth activate-service-account --key-file /tmp/account-name.json