我可以控制在python中使用语音识别时的开始和结束时间吗?



我做了以下编码。但是,我想知道是否有一些方法可以控制记录持续时间。实际上,我想拥有一个具有开始的程序&完成按钮,以便我可以控制记录。我知道这就像一个基本问题。但是我真的需要解决它。帮助我〜我应该如何补偿这个问题?

import speech_recognition as sr
r = sr.Recognizer()
mic = sr.Microphone()
show = input("enter text: ")
print("Read texta")
with mic as source:
    audio = r.listen(source)
print("recordeda")
print('Result: ', r.recognize_google(audio, language='ko-KR'))

根据 recognizer_instance.listen doc,这是一个阻止调用(即,该程序在完成之前才继续(,停止录制的唯一方法是不对recognizer_instance.pause_threshold进行交谈(0.8s by默认(。

要在录制处于活动状态时能够执行其他操作,您需要使用recognizer_instance.listen_in_background。它仍然使用相同的信号识别逻辑,但在循环中保持录制短语,直到您告诉它停止。这意味着信号识别逻辑应该足够可靠,用于所有实际目的。如果在您的情况下失败,则可能需要调整初始energy_threshold

fwiw,您可以使用RAW pyaudio手动录制,然后使用结果文件或原始数据构造AudioData

# Create the recognizer_instance:
r = sr.Recognizer()
# Set up the recognizer object 
r.pause_threshold = 5 # This is in seconds, this will control the end time of the record after the last sound was made 
#Start the record 
with sr.Microphone() as source:
    print("Say something!")
    audio = r.listen(source=source, timeout=5)

最新更新