实时录音分析库
rcaudio的Python项目详细描述
rcaudio:实时音频录制和分析库
简介
rcaudio是一个实时音频分析库,允许您通过麦克风简单地录制音频并进行分析。
它支持实时分析:
- 原始音频数据
- 音量
- 节拍信息
- DIY方法提取函数
对于中文文档:中文文档
安装
pip install rcaudio
用法
核心记录器
CoreRecorder
用于获取原始数据。启动时,音频数据将存储在CoreRecorder.buffer
中。
fromrcaudioimportCoreRecorderCR=CoreRecorder(time=10,#How much time to recordsr=1000#sample rate)CR.start()whileTrue:ifnotCR.buffer.empty():x=CR.buffer.get()print('*'*int(abs(x)))
简易录音机
在大多数情况下,我们使用SimpleRecorder
。为了提高效率,应该只实例化一次SimpleRecorder
。
这个类可以注册几个Analyzer
。
当函数start()
调用时,它将开始通过麦克风录制,并刷新所有Analyzer
分析仪
从BaseAnalyzer
扩展的所有类都可以注册到SimpleRecorder
。例如VolumeAnalyzer
可以得到麦克风的当前音量。
importtimefromrcaudioimportSimpleRecorder,VolumeAnalyzerSR=SimpleRecorder()VA=VolumeAnalyzer(rec_time=1)SR.register(VA)SR.start()whileTrue:print("VOLUME : ",VA.get_volume())time.sleep(1)
节拍分析器可以从音乐中预测节拍。(但是,会有一些延迟。)
SR=SimpleRecorder(sr=20000)BA=BeatAnalyzer(rec_time=15,initial_bpm=120,smooth_ratio=.8)SR.register(BA)SR.start()whileTrue:print(BA.block_until_next_beat())
特性分析器可用于生成所有用户定义的声学特性。只需重写data_process
函数。(当前函数是zero-crossing rate的计算。
SR=SimpleRecorder(sr=1000)FA=FeatureAnalyzer(refresh_time=1)SR.register(FA)SR.start()cpos=0whileTrue:iflen(FA.result)>cpos:print(FA.result[cpos])cpos+=1time.sleep(.01)
一些注释
大多数功能的时间延迟约为1-2秒。我做了很多努力让beatanalyzer看起来像是实时的。然而,对于FeatureAnalyzer
,如果特征提取功能与麦克风记录相比太慢,则延迟可能会变大。降低采样率是一个解决办法,但更好的办法是自己动手做一个分析仪。