cam*_*den 10 python audio beat-detection
在Python的audioop文档指出,大多数可用的功能需要"声音碎片".
audioop模块包含对声音片段的一些有用操作.它对声音片段进行操作,声音片段由8,16或32位宽的有符号整数样本组成,存储在Python字符串中.
究竟什么是声音片段,如何将现有的.wav文件合并为一个?
谢谢.
您可以使用波形模块执行此操作
该open()方法打开文件并readframes(n)返回(最多)n帧音频作为字节串,正是audioop想要的.
例如,假设您需要使用avg()audioop中的方法.这是你如何做到的:
import wave
import audioop
wav = wave.open("piano2.wav")
print(audioop.avg(wav.readframes(wav.getnframes()), wav.getsampwidth()))
Run Code Online (Sandbox Code Playgroud)
输出:
-2
Run Code Online (Sandbox Code Playgroud)
此外,您可能rewind()对wave模块中的方法感兴趣.它将读取位置放回到wav文件的开头.
如果你需要两次阅读你的wav文件,你可以这样写:
wav = wave.open("piano2.wav")
print(audioop.avg(wav.readframes(wav.getnframes()), wav.getsampwidth()))
# if you don't call rewind, next readframes() call
# will return nothing and audioop will fail
wav.rewind()
print(audioop.max(wav.readframes(wav.getnframes()), wav.getsampwidth()))
Run Code Online (Sandbox Code Playgroud)
或者您也可以缓存字符串:
wav = wave.open("piano2.wav")
string_wav = wav.readframes(wav.getnframes())
print(audioop.avg(string_wav, wav.getsampwidth()))
# wav.rewind()
print(audioop.max(string_wav, wav.getsampwidth()))
Run Code Online (Sandbox Code Playgroud)