我有包含ECG信号的this .wav文件,我想使用scipy.io.wavfile.read('sig100.wav')
提取该文件中的数据
但我收到了这个错误
“有{}位数据。”。format(bit_depth))
ValueError:不支持的位深度:wav文件具有11位数据。
当我对此进行一些研究时,我发现该函数只接受8位深度文件,但我无法弄清楚如何修改它以接受我在stackoverflow上找到this的文件但是没得到它
答案 0 :(得分:1)
根据scipy.io.wavfile source code,它接受(8,16,32,64,96,128)位数据。
虽然您可以修改wavfile源代码以接受数据,但更容易的选择是使用外部库,如pydub
。请参阅API和安装详细信息here.
首先,我们获取您的文件,将比特率转换为16位并导出它
然后,只需使用scipy
导入修改后的wav文件即可获取数据和帧速率。
from scipy.io import wavfile
from pydub import AudioSegment
audio = "sig100.wav"
audio1 = "sig100_16.wav"
#read wav file and export with 16bit bitrate
s = AudioSegment.from_file(audio, format = "wav" )
s.export(audio1 , bitrate="16", format="wav")
#read modified file
rate, data = wavfile.read(audio1)
结果:
>>> rate
360
>>> data
array([[ -928, -416],
[ -928, -416],
[ -928, -416],
...,
[-4320, -2336],
[-4896, -2144],
[-8192, 0]], dtype=int16)
>>>
希望这有帮助。