我有一个python脚本,它接收二进制原始音频数据的块,我想将这些块的采样率更改为16000,然后将它们传输到另一个组件。在
我用audiotools试过运气,但没有成功:
# f is a filelike FIFO buffer
reader = PCMFileReader(f, 44100, 1, 1, 16)
conv = PCMConverter(reader, 16000, 1, 1, 16)
然后我随时向缓冲区写入数据,得到一个新的数据块:
^{pr2}$从另一个线程的缓冲区读取:
while not reader.file.closed:
fl = conf.read(10)
chunk = fl.to_bytes(False, True)
问题是我得到了这个值错误,它似乎来自一个“samplerate.c”库:
ValueError: SRC_DATA->data_out is NULL
此错误仅在重新采样时发生。如果我关掉这一步,那么一切都很好,我得到可播放的音频。在
因此,我的问题是:什么是完成这项任务的好工具?如果audiotools是正确的答案,我该怎么做才能正确呢。在
这是一个简化的重采样代码
dataFormat
是流中每个样本的字节数,例如:立体声16位等于4,original_samples
是源bin字符串大小,desired_samples
是所需的位字符串大小,16KHz->;44K1Hz ex:original=160 but designed=441,pcm
是源bin字符串,return是重采样的bin字符串):相关问题 更多 >
编程相关推荐