脾气暴躁:Wav列出,然后再返回创建垃圾

时间:2018-09-18 21:43:09

标签: python python-3.x numpy wav

我正在使用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库没有任何经验,如果有更有效的方法可以做到这一点,我会对学习有兴趣。

1 个答案:

答案 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