首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从.wav文件中提取数据

从.wav文件中提取数据
EN

Stack Overflow用户
提问于 2018-02-11 18:34:45
回答 1查看 4.9K关注 0票数 1

我有包含心电信号的 .wav文件,我想使用scipy.io.wavfile.read('sig100.wav')提取该文件中的数据,但是我得到了这个错误

“具有{}-bit数据。”.format(Bit_depth)) ValueError:不支持的位深度: wav文件有11位数据.

当我对此进行一些研究时,我发现该函数只接受8位深度文件,但我不知道如何修改它以接受我的文件--我在堆栈溢出中找到了,但没有得到它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-11 20:13:21

根据scipy.io.wavfile源代码,它接受(8,16,32,64,96,128)位数据。

虽然您可以修改波文件源代码以接受数据,但更容易的替代方法是使用外部库(如pydub )。请参阅API和安装细节这里。

首先,我们获取您的文件,将比特率转换为16位并导出它。

然后,简单地导入修改后的wav文件,使用scipy获取数据和帧速率.

代码语言:javascript
复制
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)

结果:

代码语言:javascript
复制
>>> rate
360
>>> data
array([[ -928,  -416],
       [ -928,  -416],
       [ -928,  -416],
       ...,
       [-4320, -2336],
       [-4896, -2144],
       [-8192,     0]], dtype=int16)
>>> 

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48734993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档