如何播放NumPy数组中包含的样本的声音?

时间:2015-09-02 04:11:29

标签: matlab audio numpy scipy

我试图在Matlab中找到与soundsc()sound()对应的函数。基本上,我想通过播放NumPy数组中包含的样本来听声音。这样做有什么功能吗?

2 个答案:

答案 0 :(得分:0)

我不确定是否存在numpy函数来执行此操作,但您可以使用scipy.io.wavfile中的Walk through all XML nodes in an element-nested structure将数组(只要它包含整数)转换为wav文件,然后播放文件。

我还没有详细介绍,但我认为this function在Python中引用了有用的声音工具。

修改:另请参阅this page

答案 1 :(得分:0)

这适用于Linux& MAC

大多数Linux计算机预先安装了vox库,让您可以从命令行播放音频。

因此假设您使用scipy.io.write将数组写入wave文件,您可以使用subprocess模块在​​Python程序中播放它。

这是一个完整的例子:

from scipy.io.wavfile import write
import numpy as np


fs = 44100 # sampling frequency
input_array = np.random.rand(fs*2) # 2 seconds audio
write('output.wav', fs, input_array)

# now that file is written to the disk - play it
import subprocess
subprocess.call(["play", 'output.wav']) <-  for linux
subprocess.call(["afplay", 'output.wav']) <- for Mac

对于Windows,据我所知,没有内置的命令行播放器 - 因此您可能需要安装一些程序,以便在使用上述代码之前执行此操作。