道歉的英语。...
我正在构建一个聊天机器人应用程序,该语音程序通过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开发人员,所以如果这是一个愚蠢的问题,请原谅。任何帮助都将受到高度赞赏。
答案 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