我正在使用Python 3.7,当前正在开发一种解决方案,要求我将WAV文件转换为Numpy数组,然后转换为列表,然后再转换为数组,最后再次作为WAV文件写入。今天早些时候,它能够进行转换,然后再无问题地进行转换。但是,它当前正在返回一个WAV文件,该文件可以收听,但完全是静态的。
import numpy as np
import scipy.io.wavfile as wavfile
...
rate, data = wavfile.read(os.path.join(F_IN_FOLDER, f))
work = data.tolist()
out = np.array(work, dtype=np.float32)
wavfile.write(os.path.join(F_IN_FOLDER, f), rate, out)
此代码的目的是使我可以(作为列表)使WAV文件的某些部分静音,然后覆盖原始文件。我对WAV文件和Numpy库没有任何经验,如果有更有效的方法可以做到这一点,我会对学习有兴趣。
答案 0 :(得分:1)
我同意@NilsWerner-您应该能够以numpy数组的形式进行所有操作,并且比以列表形式进行处理要快得多。我不确定“沉默”是什么意思,但是暂时假设这涉及到将零写入数组的特定部分,那么您可以执行以下操作:
# create an array of 1's (my sample test data)
a = np.ones(10)
# zero out a specific range of indices using standard numpy slice notation.
a[5:8] = 0
# check the result
print(a)
然后回来
[1. 1. 1. 1. 1. 0. 0. 0. 1. 1.]
查看位于numpy slices的numpy文档和相关的scipy文档scipy indexing。