.wav файл не воспроизводит звуки

Я хочу создать файл .wav в Python с использованием библиотек numpy и scipy, где воспроизводятся несколько тонов, и я намереваюсь это сделать, сохраняя свои частоты в массиве, а затем сгенерированные сигналы сохраняются в другой. Мне удалось создать такой файл с желаемым временем воспроизведения, но он не воспроизводит звук. Я что-то упускаю?

Спасибо.

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)

person Big Puncho    schedule 11.05.2012    source источник


Ответы (1)


Вектор, который вы используете для создания волнового файла, содержит числа с плавающей запятой, но scipy.io интерпретирует их как 64-битные целые числа (как указано в документация), которая не поддерживается большинством проигрывателей.

Изменение последней строки на

wavfile.write('music.wav',fs,music.astype(np.dtype('i2')))

должен создать файл, который может быть воспроизведен правильно.

person Torsten Marek    schedule 11.05.2012