Как указать выходной канал (левый, правый) с помощью pydub?

Я хотел бы видеть ту же функцию, что и в pygame, channel.set_volume для pygame.mixer.sound. Пример:

import pygame
pygame.init()

sound = pygame.mixer.Sound(name_of_the_file)
channel = sound.play()
channel.set_volume(1,1)     #That's what I need...  

Мне это нужно для программы, которая запускает один компьютер и отправляет информацию через динамик для каждого рабочего офиса. Есть ли что-то подобное на pydub? Спасибо.


person Federico Leoni    schedule 23.06.2015    source источник


Ответы (1)


В версии Pydub для разработчиков (на github) вы можете использовать новый apply_stereo_gain или pan:

from pydub import AudioSegment
sound = AudioSegment.from_file("/path/to/sound.mp3", format="mp3")

# pan 10% left
panned1 = sound.pan(-0.1)

# left channel lowered 6 dB, right channel unchanged
panned2 = sound.apply_stereo_gain(-6.0, 0.0)
person Jiaaro    schedule 24.06.2015
comment
@FedericoLeoni вы можете установить с github напрямую с помощью pip install git+https://github.com/jiaaro/pydub.git@master - person Jiaaro; 24.06.2015
comment
Ммммм. Где именно я должен разместить информацию о панорамировании/усилении? sound = AudioSegment.from_ogg('/home/effe/voice_orders/sound1.ogg') sound.set_gain(-5.0,0.0) # или sound.pan(-1.0) play(sound) Не меняет канал громкости.. - person Federico Leoni; 24.06.2015
comment
@FedericoLeoni (1) Я переименовал методы и опубликовал выпуск на pypi (так что вы можете установить с помощью pip) | Ответ обновлен, чтобы отразить изменения. AudioSegment объекты неизменяемы, поэтому вам нужно присвоить результат: panned_sound = sound.pan(…) и затем работать с результатом - person Jiaaro; 24.06.2015
comment
Да, я понял это после некоторых испытаний... panned = sound.pan(+1.0) play(panned) сделать свою работу. Спасибо! - person Federico Leoni; 24.06.2015