我需要将音频片段捕获为WAV文件,然后我可以将其传递给另一个python进行处理.问题是我需要确定何时存在音频然后记录它,当它变为静音时停止然后将该文件传递给处理模块.
我认为应该可以通过波形模块检测何时有纯静音并丢弃它然后只要检测到静音以外的其他内容开始录制,然后当线路再次静音时再停止录制.
只是不能完全了解它,任何人都可以让我开始一个基本的例子.
我正在编写一个python函数来返回.wav文件的响度.RMS似乎是最好的指标,用python检测并录制声音.
audioop.rms()诀窍,但我想避免audioop作为依赖,我已经导入numpy.但我没有得到相同的RMS值,并希望有助于理解正在发生的事情.
从audioop页面,它说rms计算正是你所期望的,即sqrt(sum(S_i^2)/n),其中,S_i是i声音的第一个样本.似乎它不是火箭科学.
要使用numpy的,我第一声音转换为numpy的阵列,并且总能看到相同的最小/最大,并且数据的相同的长度(这样的转化似乎罚款).
>>> d = np.frombuffer(data, np.int16)
>>> print (min(d), max(d)), audioop.minmax(data,2)
(-2593, 2749) (-2593, 2749)
Run Code Online (Sandbox Code Playgroud)
但我获得了非常不同的RMS值,甚至没有球场关闭:
>>> numpy_rms = np.sqrt(sum(d*d)/len(d))
>>> print numpy_rms, audioop.rms(data, 2)
41.708703254716383, 120
Run Code Online (Sandbox Code Playgroud)
它们之间的差异是可变的,没有我能看到的明显模式,例如,我也得到:
63.786714248938772, 402
62.779300661773405, 148
Run Code Online (Sandbox Code Playgroud)
我的numpy RMS代码给出了相同的输出:信号的Numpy Root-Mean-Squared(RMS)平滑
我不知道我哪里出错了,但有些事情已经结束了.任何帮助非常感谢.
编辑/更新:
如果它有用,这是我最终得到的代码.它不像audioop那么快,但仍然足够快,足够我的目的.值得注意的是,使用np.mean()比使用python sum()的版本更快(~100x).
def np_audioop_rms(data, width):
"""audioop.rms() using numpy; avoids another dependency for app"""
#_checkParameters(data, width)
if len(data) == 0: return None
fromType = (np.int8, np.int16, np.int32)[width//2]
d = …Run Code Online (Sandbox Code Playgroud) 我有IR传感器,它有TRS连接器,我可以将我的遥控器信号录制成音频.现在我想用电视遥控器控制我的电脑,但我不知道如何将音频输入与预先录制的音频进行比较.但在我意识到这些音频波只包含某种数据(二进制)后,我可以将它们变成二进制或十六进制,因此比较容易得多.
波浪看起来像这样:

还有这个:

这些是"OK"按钮的记录,有时在右声道上也有一些冲动,我不知道为什么,似乎传感器中的连接可能会损坏.好吧,无论如何,这无关紧要
我需要帮助python程序读取这些脉冲并将这些转换为二进制,实时从音频输入(麦克风). 我知道这听起来像"为我而做,而我喜欢我的生活",但我没有声音转换/阅读的经验......我一直在寻找用于录制和阅读音频的python示例,但没有成功.
因此,我打算尝试使用Arduino和Python制作一个灯管,通过串行通信来控制几个LED的亮度.计算机将使用麦克风或播放MP3来生成数据.
我不太确定如何处理音频处理.什么是python的一个很好的选择,可以采取播放音频文件或麦克风数据(我更喜欢麦克风),然后将其分成不同的频率范围,并将强度写入变量?如果我使用麦克风,是否需要担心泛音?
我希望在后台运行python脚本,并在麦克风的阈值达到某个点时使用pyaudio记录声音文件.这适用于双向无线电网络上的监视器.因此我们只想记录传输的音频.
任务记:
在%门限阈值上录制音频输入
经过这么多秒的沉默后停止录音
音频后保持录音这么多秒钟
阶段2:将数据输入MySQL数据库以搜索记录
我正在寻找类似的文件结构
/home/Recodings/2013/8/23/12-33.wav将于2013年8月23日@ 12:33.wav录制传输
我使用过的代码
我现在有点不知所措从现在开始,我会非常感激一点指导
谢谢