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