Python аудио из BytesIO конвертировать в моно и обратно в BytesIO
Есть стерео аудио файл, загруженный в BytesIO
Есть ли возможность сконвертировать его в моно и загрузить в другой BytesIO?
Видел конвертацию с помощью pydub:
from pydub import AudioSegment
sound = AudioSegment.from_wav("/path/to/file.wav")
sound = sound.set_channels(1)
sound.export("/output/path.wav", format="wav")
Но он не позволяет работать с file-like объектами
Ответы (1 шт):
Автор решения: Александр
→ Ссылка
Вот так может быть?
from io import BytesIO
from threading import Thread
from pydub import AudioSegment
from pydub.playback import play
import requests
def main():
url = 'https://static.muzlo.cc/download/32185/Eminem_-_Crazy-In-Love.mp3'
headers = {
'accept-encoding': 'dentity;q=1, *;q=0',
'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'cookie': '_ym_uid=1598301264972206367; _ym_d=1598301264;\
_ga=GA1.2.588910291.1598301264; _gid=GA1.2.540363687.1598301264;\
_ym_isad=2; _gat_gtag_UA_120812414_1=1',
'sec-fetch-dest': 'audio',
'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64)\
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'}
response = requests.get(url, headers, stream=True)
length = response.headers['Content-Length']
print(length)
content = response.content
mp3_sound = AudioSegment.from_mp3(BytesIO(content))
# mp3.split_to_mono()
mp3_sound.set_channels(1)
wav_bytes = mp3_sound.export(BytesIO(mp3_sound.raw_data), format="wav")
wav_sound = AudioSegment.from_wav(wav_bytes)
# play(mp3_sound)
play(wav_sound) # MONO
if __name__ == '__main__':
main()