Python 如何将此pyaudio流中生成的声音存储到WAV或MP3文件中?
playScale函数接受一系列频率,并使用正弦音调函数播放这些频率。如何将这一系列声音保存到.WAV文件或.MP3文件中?您应该将所有音频数据写入一个流,然后您可以使用python中的“wave”库保存此流,该库可以控制wave文件 然而,对于您当前的代码,我不确定它将如何工作,因为您正在为每个声音/音调编写单独的流。您可能希望将一个流传递到该函数中,以便在以后呈现所有音频时也可以附加该流并使用其他函数进行保存Python 如何将此pyaudio流中生成的声音存储到WAV或MP3文件中?,python,python-3.x,python-3.2,pyaudio,Python,Python 3.x,Python 3.2,Pyaudio,playScale函数接受一系列频率,并使用正弦音调函数播放这些频率。如何将这一系列声音保存到.WAV文件或.MP3文件中?您应该将所有音频数据写入一个流,然后您可以使用python中的“wave”库保存此流,该库可以控制wave文件 然而,对于您当前的代码,我不确定它将如何工作,因为您正在为每个声音/音调编写单独的流。您可能希望将一个流传递到该函数中,以便在以后呈现所有音频时也可以附加该流并使用其他函数进行保存 """Play a fixed frequency sound.""" from
"""Play a fixed frequency sound."""
from __future__ import division
import math
from pyaudio import PyAudio
def sine_tone(frequency, duration, volume=1, sample_rate=22050):
n_samples = int(sample_rate * duration)
restframes = n_samples % sample_rate
p = PyAudio()
stream = p.open(format=p.get_format_from_width(1), # 8bit
channels=1, # mono
rate=sample_rate,
output=True)
s = lambda t: volume * math.sin(2 * math.pi * frequency * t / sample_rate)
samples = (int(s(t) * 0x7f + 0x80) for t in range(n_samples))
for buf in zip(*[samples]*sample_rate): # write several samples at a time
stream.write(bytes(bytearray(buf)))
# fill remainder of frameset with silence
stream.write(b'\x80' * restframes)
stream.stop_stream()
stream.close()
p.terminate()
def playScale(scale):
for x in scale:
print(x)
sine_tone(frequency = x,
duration = 1,
volume=.5,
sample_rate = 50000)