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

问题描述 投票:2回答:1

我目前有以下代码,使用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)

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

python python-3.x audio pyaudio
1个回答
0
投票

[像我here in the second answer一样,将音频输入作为一个numpy数组处理,但不仅要处理帧并将数据发送回PyAudio,还要将每个帧保存在新的output_array中。然后,当处理完成后,您可以使用该output_array将其写入.wav或.mp3文件。

但是,如果这样做,声音仍然会播放。如果您不想播放声音,则有两种选择,或者使用阻塞模式,或者如果您想坚持使用非阻塞模式和回调,请执行以下操作:

  • 擦除output=True,使其默认为False
  • 添加input=True参数。
  • 在您的回调中,不返回ret_data,而是返回None
  • 保留已处理的帧数,以便在完成后将paComplete作为返回的元组的第二个值返回。
© www.soinside.com 2019 - 2024. All rights reserved.