Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何检测输入音频的存在并在其存在时执行操作?_Python 3.x_Audio - Fatal编程技术网

Python 3.x 如何检测输入音频的存在并在其存在时执行操作?

Python 3.x 如何检测输入音频的存在并在其存在时执行操作?,python-3.x,audio,Python 3.x,Audio,我选中了pyaudio,但它提供了录制输入并对其进行操作的功能,我只想在存在音频输入时执行操作 您可以使用PyAudio实现简单的输入音频检测。你只需要决定你的音频存在意味着什么 在下面的示例代码中,我使用了一个带有阈值的简单计算。另一种选择是峰值测试,只是将每个音频样本的振幅与峰值振幅阈值进行比较。什么对您最有用取决于应用程序 您可以使用阈值(即音频的最小振幅或响度)和块大小(即音频检测的延迟)来获得您想要的行为 导入pyaudio 输入数学 费率=44100 区块=1024 音频存在阈值=1

我选中了pyaudio,但它提供了录制输入并对其进行操作的功能,我只想在存在音频输入时执行操作

您可以使用
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)或语音检测的东西。我建议您用这些信息更新您的问题。在我的回答中,可以使用简单的均方根方法作为粗略的语音活动检测。不过,您需要调整阈值,使其大于背景噪声并低于大多数语音。此外,请查看此项。