Python 3.x Python pydub:导出从numpy数组创建的音频段时出现错误的采样宽度错误
我有一个长度为109890个浮点数的numpy数组 然后使用以下内容创建AudioSegment实例:Python 3.x Python pydub:导出从numpy数组创建的音频段时出现错误的采样宽度错误,python-3.x,Python 3.x,我有一个长度为109890个浮点数的numpy数组 然后使用以下内容创建AudioSegment实例: segment = AudioSegment(data=sinewave.tobytes(), sample_width=sinewave.dtype.itemsize, frame_rate=frameRate, channels=1) #where frameRate is 44100 segment.export('redgiant.mp3', format='mp3') 但我得到
segment = AudioSegment(data=sinewave.tobytes(), sample_width=sinewave.dtype.itemsize, frame_rate=frameRate, channels=1)
#where frameRate is 44100
segment.export('redgiant.mp3', format='mp3')
但我得到了以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/osiris/anaconda3/lib/python3.6/site-packages/pydub/audio_segment.py", line 787, in export
wave_data.setsampwidth(self.sample_width)
File "/Users/osiris/anaconda3/lib/python3.6/wave.py", line 343, in setsampwidth
raise Error('bad sample width')
wave.Error: bad sample width
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
导出文件“/Users/osiris/anaconda3/lib/python3.6/site packages/pydub/audio_segment.py”,第787行
波形数据设置采样宽度(自采样宽度)
文件“/Users/osiris/anaconda3/lib/python3.6/wave.py”,第343行,设置采样宽度
raise错误(“错误的样本宽度”)
错误:采样宽度不正确
这是因为我的初始正弦波有一个任意长度,它不适合作为sampleWidth*frameRate的倍数吗?我有类似的问题
segment = AudioSegment(data=sinewave.astype("float32").tobytes(), sample_width=4, frame_rate=frameRate, channels=1)
解决了。这似乎与以下问题有关: