Numpy 复制声音片段

复制声音片段,本章我们将下载一个WAV文件并把其中包含的声音片段重复三次。

具体步骤

  1. 复制声音片段。

虽然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]))
  1. 绘制声音数据。

用Matplotlib绘制声音数据。

matplotlib.pyplot.title("Repeated")
matplotlib.pyplot.plot(repeated)

原始的声音数据和复制后的数据如下图所示。

复制声音片段

攻略小结

本章用到的几个最重要的函数如下。

函数 功能描述
scipy.io.wavfile.read 把WAV文件加载到数组
numpy.tile 把数组内容重复指定次数
scipy.io.wavfile.write 按照指定的采样率,从NumPy数组创建WAV文件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程