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

时间:2019-07-13 03:51:47

标签: python html speech-recognition

道歉的英语。...

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

在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开发人员,所以如果这是一个愚蠢的问题,请原谅。任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

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

似乎AudioFile可以使用文件对象,因此此代码使用io.BytesIO在内存中创建文件对象并将数据保存在此文件中。这样,它不必使用磁盘。

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