如何将 pyaudio 输出写入音频文件?

Geo*_*ian 6 python audio pyaudio python-3.x

我目前有以下代码,它使用该模块产生不同频率的正弦波pyaudio

import pyaudio
import numpy as np

p = pyaudio.PyAudio()

volume = 0.5
fs = 44100
duration = 1

f = 440

samples = (np.sin(2 * np.pi * np.arange(fs * duration) * f / 
fs)).astype(np.float32).tobytes()

stream = p.open(format = pyaudio.paFloat32,
                channels = 1,
                rate = fs,
                output = True)

stream.write(samples)
Run Code Online (Sandbox Code Playgroud)

但是,除了播放声音之外,有什么方法可以将声音写入音频文件吗?

Geo*_*ian 3

按照 @h lee 的建议使用scipy.io.wavfile.write产生了预期的结果:

import numpy
from scipy.io.wavfile import write

volume = 1
sample_rate = 44100
duration = 10
frequency = 1000

samples = (numpy.sin(2 * numpy.pi * numpy.arange(sample_rate * duration)
     * frequency / sample_rate)).astype(numpy.float32)

write('test.wav', sample_rate, samples)
Run Code Online (Sandbox Code Playgroud)

另一个例子可以在文档中找到:https://docs.scipy.org/doc/scipy/reference/ generated/scipy.io.wavfile.write.html