我正在尝试制作一堆.wav文件的频谱图,以便我可以进一步分析它们(在python 3.6中),但是,我不断收到此讨厌的错误
ValueError: Unsupported bit depth: the wav file has 24-bit data.
Run Code Online (Sandbox Code Playgroud)
我研究了其他堆栈溢出问题,例如 如何用Python编写24位WAV文件? 但是这些都不能解决问题!
我找到了一个名为Pysoundfile的音频库
http://pysoundfile.readthedocs.io/en/0.9.0/
我安装了
pip3 install pysoundfile
Run Code Online (Sandbox Code Playgroud)
我查看了文档,但仍然不清楚如何将24位.wav文件转换为32位wav文件或16位wav文件,以便可以从中创建频谱图。
任何帮助,将不胜感激!
我建议将SoX用于此任务。更改位深度非常简单:
sox old.wav -b 16 new.wav
Run Code Online (Sandbox Code Playgroud)
如果必须使用Python,则可以使用发现的PySoundFile。这是一个小代码段:
import soundfile
data, samplerate = soundfile.read('old.wav')
soundfile.write('new.wav', data, samplerate, subtype='PCM_16')
Run Code Online (Sandbox Code Playgroud)
您还应该使用soundfile.available_subtypes
查看可以将文件转换为哪些子类型。以下是其用法示例,摘自其文档:
>>> import soundfile as sf
>>> sf.available_subtypes('FLAC')
{'PCM_24': 'Signed 24 bit PCM',
'PCM_16': 'Signed 16 bit PCM',
'PCM_S8': 'Signed 8 bit PCM'}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4938 次 |
最近记录: |