【发布时间】:2023-04-04 05:03:01
【问题描述】:
我有一个函数可以将 WAV 音频帧生成到列表中。有什么方法可以播放该列表中的音频,而无需使用中间文件生成AudioSegment 对象?
编辑:作为参考,this 是我的代码。
【问题讨论】:
我有一个函数可以将 WAV 音频帧生成到列表中。有什么方法可以播放该列表中的音频,而无需使用中间文件生成AudioSegment 对象?
编辑:作为参考,this 是我的代码。
【问题讨论】:
我建议像这样直接实例化AudioSegment() 对象:
from pydub import AudioSegment
sound = AudioSegment(
# raw audio data (bytes)
data=b'…',
# 2 byte (16 bit) samples
sample_width=2,
# 44.1 kHz frame rate
frame_rate=44100,
# stereo
channels=2
)
附录:我看到您在链接代码 sn-p 中生成声音。你可能对pydub's audio generators感兴趣
from pydub.generators import Sine
from pydub import AudioSegment
sine_generator = Sine(300)
# 0.1 sec silence
silence = AudioSegment.silent(duration=100)
dot = sine_generator.to_audio_segment(duration=150)
dash = sine_generator.to_audio_segment(duration=300)
signal = [dot, dot, dot, dash, dash, dash, dot, dot, dot]
output = AudioSegment.empty()
for piece in signal:
output += piece + silence
最后一点:像这样迭代地扩展 AudioSegment 会变慢。你可能想做类似this Mixer example
【讨论】: