Python 3.x 如何检测输入音频的存在并在其存在时执行操作?
我选中了pyaudio,但它提供了录制输入并对其进行操作的功能,我只想在存在音频输入时执行操作 您可以使用Python 3.x 如何检测输入音频的存在并在其存在时执行操作?,python-3.x,audio,Python 3.x,Audio,我选中了pyaudio,但它提供了录制输入并对其进行操作的功能,我只想在存在音频输入时执行操作 您可以使用PyAudio实现简单的输入音频检测。你只需要决定你的音频存在意味着什么 在下面的示例代码中,我使用了一个带有阈值的简单计算。另一种选择是峰值测试,只是将每个音频样本的振幅与峰值振幅阈值进行比较。什么对您最有用取决于应用程序 您可以使用阈值(即音频的最小振幅或响度)和块大小(即音频检测的延迟)来获得您想要的行为 导入pyaudio 输入数学 费率=44100 区块=1024 音频存在阈值=1
PyAudio
实现简单的输入音频检测。你只需要决定你的音频存在意味着什么
在下面的示例代码中,我使用了一个带有阈值的简单计算。另一种选择是峰值测试,只是将每个音频样本的振幅与峰值振幅阈值进行比较。什么对您最有用取决于应用程序
您可以使用阈值(即音频的最小振幅或响度)和块大小(即音频检测的延迟)来获得您想要的行为
导入pyaudio
输入数学
费率=44100
区块=1024
音频存在阈值=1000
def检测输入音频(数据,阈值):
如果没有数据:
返回错误
rms=math.sqrt(总和([x**2表示数据中的x])/len(数据))
如果rms>阈值:
返回真值
返回错误
audio=pyaudio.pyaudio()
stream=audio.open(格式=pyaudio.paInt16,通道=1,输入=True,
速率=速率,每帧帧缓冲区=块)
数据=[]
检测输入音频时(数据、音频存在阈值):
data=stream.read(块)
#当存在输入音频时,请执行某些操作
# ...
stream.stop_stream()
stream.close()
audio.terminate()
您的用例是什么-任何声音检测或语音检测?谢谢您的回复@arghol。我想在没有“打开麦克风”选项的游戏中,每当我说话时,使用脚本进行音频检测,因此脚本会检测我说话时(音频输入),我使用另一个库在gameOk中按下说话热键!然后你需要一种叫做(VAD)或语音检测的东西。我建议您用这些信息更新您的问题。在我的回答中,可以使用简单的均方根方法作为粗略的语音活动检测。不过,您需要调整阈值,使其大于背景噪声并低于大多数语音。此外,请查看此项。