在Python中播放向量声音。
需要的库有:
在终端使用conda安装:
conda install -c anaconda numpy
conda install -c anaconda pyaudio
代码如下:
#引入库
import numpy as np
import pyaudio
#定义播放函数和输入数据
def play(sound,FS):
#sound 为输入的声音数据,格式为向量或数列,FS为采样频率
CHUNK=1024 #Samples per Blocksize,数据流块大小
WIDTH=2 #2 Bytes per Sample,每个采样的大小
CHANNELS=1 #Channels,声道数量
RATE = FS #Sampling Rate in Hz,采样频率
p = pyaudio.PyAudio()
#打开并定义数据流格式
stream = p.open(format=p.get_format_from_width(WIDTH),
channels=CHANNELS,
rate=RATE,
input=False,
output=True,
frames_per_buffer=CHUNK)
for i in range(0, int(len(sound) / CHUNK) ):
#把sound文件中的正数量化成比特
samples=sound[i*CHUNK:((i+1)*CHUNK)];
samples=clip(samples,-2**15,2**15-1)
#播放
stream.write(samples.astype(np.int16),len(samples))
#播放完成,停止数据流
stream.stop_stream()
stream.close()