复制声音片段,本章我们将下载一个WAV文件并把其中包含的声音片段重复三次。
具体步骤
- 复制声音片段。
虽然NumPy中有一个repeat
函数,但在本攻略中选用tile
函数才是更适当的选择。repeat
函数通过把每个元素都单独复制若干次的方式来达到扩展数组的效果,而不是把数组内容作为一个整体进行复制。
如下的IPython会话清楚地展示了这两个函数的区别。
In: x = array([1, 2])
In: x
Out: array([1, 2])
In: repeat(x, 3)
Out: array([1, 1, 1, 2, 2, 2])
In: tile(x, 3)
Out: array([1, 2, 1, 2, 1, 2])
了解这个知识点后,使用tile
函数处理数据。
repeated = numpy.tile(data, int(sys.argv[1]))
- 绘制声音数据。
用Matplotlib绘制声音数据。
matplotlib.pyplot.title("Repeated")
matplotlib.pyplot.plot(repeated)
原始的声音数据和复制后的数据如下图所示。
攻略小结
本章用到的几个最重要的函数如下。
函数 | 功能描述 |
---|---|
scipy.io.wavfile.read |
把WAV文件加载到数组 |
numpy.tile |
把数组内容重复指定次数 |
scipy.io.wavfile.write |
按照指定的采样率,从NumPy数组创建WAV文件 |