好的,所以我正在处理一个类项目,我正在尝试将使用 javascript 的 navigator.mediaDevices.getUserMedia 和 MediaRecorder 类制作的录音发送到我的 Web 应用程序的后端(用 Python、Flask 编写)和 Google Speech到文本 API (google-cloud-speech)
到目前为止,我已经到了录制的地步,但我似乎无法成功地将它发送到 Google Cloud API。这是我正在尝试的方法:
- 使用 navigator.mediaDevices.getUserMedia 识别用户的麦克风
- 使用生成的音频流制作 MediaRecorder 对象
- 使用该记录器对象用生成的音频制作一个 blob(使用 {'type' : 'audio/flac'})
- Base64Encode写入一个隐藏的表单元素,提交对应的表单
- 从那里,生成的 POST 请求将发送到我的 Python Flask 后端,在那里它将 Base64 编码的字符串作为...字符串读取
- 尝试使用 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",
)
有谁知道这里有什么问题?