使用语音识别将音频 Blob 转换为 Python 中的文本

Converting Audio Blob to text in Python using Speech recognition

为英语道歉....

我正在构建一个聊天机器人应用程序,其中通过 HTML5 的 mediaRecorder api 在客户端记录语音并作为 Formdata 发送到 python 的 falcon 网络服务。

在 Python 方面,我需要直接将此音频 blob 转换为文本。

目前我正在将这个音频 blob 写入一个 wav 文件,然后从该文件中读取。但是,由于涉及 FileIO,此过程需要很长时间。我需要以某种方式直接使用此音频 blob 作为语音识别的输入源。

这是我试过的:

def on_post(self, req, resp):         

    open("backend.wav",'wb')
      .write(req.get_param('audio_data').file.read());

    mic = sr.AudioFile('backend.wav')
    with mic as source:
       print("Speak !!")
       audio = r.record(source)

    #audio = req
    results = r.recognize_google(audio_data=audio, language="en-US",show_all=True)

    return results;

我不是经验丰富的 Python 开发人员,所以如果这是一个愚蠢的问题,请原谅。非常感谢任何帮助..

我无法测试它,但它可以工作。

好像AudioFile可以用file-object所以这段代码用io.BytesIO在内存中创建file-object,把数据保存在这个文件中。这样它就不必使用磁盘。

import io


def on_post(self, req, resp):    

    f = req.get_param('audio_data').file

    file_obj = io.BytesIO()  # create file-object
    file_obj.write(f.read()) # write in file-object
    file_obj.seek(0) # move to beginning so it will read from beginning

    mic = sr.AudioFile(file_obj) # use file-object
    with mic as source:
         audio = r.record(source)

    result = r.recognize_google(audio_data=audio, language="en-US", show_all=True)

    return result