我想使用 numpy 和 scipy 库在 Python 中创建一个 .wav 文件,其中播放多个音调,我打算这样做的方式是将我的频率存储在一个数组中,然后将生成的信号存储在另一个数组中一。我已经设法创建了具有所需播放时间的此类文件,但它不播放任何声音。我错过了什么吗?
谢谢。
import numpy as np
from scipy.io import wavfile
freq =np.array([440,493,523,587,659,698,783,880]) #tone frequencies
fs=22050 #sample rate
duration=1 #signal duration
music=[]
t=np.arange(0,duration,1./fs) #time
for i in range(0,len(freq)):
x=10000*np.cos(2*np.pi*freq[i]*t) #generated signals
music=np.hstack((music,x))
wavfile.write('music.wav',fs,music)
最佳答案
您用来创建 wave 文件的矢量包含 float ,但 scipy.io
将它们解释为 64 位整数(如 the docs 中所述),大多数情况下不支持玩家。
将最后一行更改为
wavfile.write('music.wav',fs,music.astype(np.dtype('i2')))
应该会产生一个可以正常播放的文件。
关于python - .wav 文件不播放任何声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10558377/