PyDub проигрывает аудио из переменной - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть функция, которая может генерировать аудио кадры WAV в список.Можно ли воспроизвести звук из этого списка без использования промежуточного файла для создания объекта AudioSegment?

РЕДАКТИРОВАТЬ: Для справки, это мойкод.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Я предлагаю создавать экземпляры 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
)

addendum: я вижу, что вы генерируете звук в своем фрагменте связанного кода.Возможно, вас заинтересуют звуковые генераторы pydub

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 может привести к замедлению.Возможно, вы захотите сделать что-то вроде этот пример микшера

0 голосов
/ 13 декабря 2018

Мне удалось решить эту проблему с помощью объекта BytesIO .Поскольку моя библиотека использует wave.open, я могу просто ввести объект, подобный IO, для сохранения и чтения.Я не уверен, что это самый питонический ответ, но именно это я и использовал.

...