开始使用免费开始使用

查找时间戳

我们知道声波的采样频率是 48 kHz,但如果不知道呢?我们可以用声波数组的长度除以声波的持续时间来求得采样频率。不过,Python 的 wave 模块提供了更好的方法。在波形对象上调用 getframerate() 会返回该对象的帧率。

然后我们可以使用 NumPy 的 linspace() 方法,为声波数组中的每个整数生成对应的时间戳。这将有助于后续可视化声波。

linspace() 方法接收 start、stop 和 num 参数,并返回在 start 与 stop 之间均匀分布的 num 个值。

在本例中,start 设为 0,stop 设为声波数组长度除以帧率(也就是音频文件的持续时间),num 设为声波数组的长度。

本练习是课程的一部分

Python 语音语言处理

查看课程

练习说明

  • 将声波字节转换为整数。
  • 使用 getframerate() 获取"good morning"音频文件的帧率。
  • 将 stop 设为 soundwave_gm 的长度除以帧率。
  • 将 num 设为 soundwave_gm 的长度。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Read in sound wave and convert from bytes to integers
good_morning = wave.open('good_morning.wav', 'r')
signal_gm = good_morning.readframes(-1)
soundwave_gm = np.frombuffer(____, dtype='int16')

# Get the sound wave frame rate
framerate_gm = good_morning.____

# Find the sound wave timestamps
time_gm = np.linspace(start=0,
                      stop=____/____,
					  num=____)

# Print the first 10 timestamps
print(time_gm[:10])
编辑并运行代码