1

好的,所以我正在处理一个类项目,我正在尝试将使用 javascript 的 navigator.mediaDevices.getUserMedia 和 MediaRecorder 类制作的录音发送到我的 Web 应用程序的后端(用 Python、Flask 编写)和 Google Speech到文本 API (google-cloud-speech)

到目前为止,我已经到了录制的地步,但我似乎无法成功地将它发送到 Google Cloud API。这是我正在尝试的方法:

  1. 使用 navigator.mediaDevices.getUserMedia 识别用户的麦克风
  2. 使用生成的音频流制作 MediaRecorder 对象
  3. 使用该记录器对象用生成的音频制作一个 blob(使用 {'type' : 'audio/flac'})
  4. Base64Encode写入一个隐藏的表单元素,提交对应的表单
  5. 从那里,生成的 POST 请求将发送到我的 Python Flask 后端,在那里它将 Base64 编码的字符串作为...字符串读取
  6. 尝试使用 google-cloud-speech 客户端解码文本

它不工作。我正在使用 Python 库,我似乎无法直接发送 base64 字符串(因为 Python 库需要字节)。我已经尝试将字符串 base64 解码回字节,但是当我通过 API 运行它时,我似乎总是得到空 ([]) 结果。在简单地查找之后,似乎采样率可能是一个问题。我尝试将 navigator.mediaDevices.getUserMedia() 对象的采样率设置为 16000——构造函数如下所示:

navigator.mediaDevices.getUserMedia({ audio: true, sampleRate: 16000 })

我的 client.recognize() 调用(在我的 Python 后端)的配置部分如下所示:

config = speech.RecognitionConfig(
    encoding=speech.RecognitionConfig.AudioEncoding.FLAC,
    sample_rate_hertz=int(sampleRate),
    language_code="en-US",
)

有谁知道这里有什么问题?

4

0 回答 0