Я создал робота Telegram , и одной из его задач является создание семплов из аудиофайлов. Теперь для большинства аудио, которые отправляются на него, образец отлично подходит; как то так:
Однако для некоторых аудиозаписей сэмпл выглядит немного странно:
Как видите, волны в этом файле не показаны ! (Могу вас заверить, что голос не пустой)
Для создания примера я использую pydub
(Спасибо, Джеймс !). Вот часть, которую я создаю образец:
song = AudioSegment.from_mp3('song.mp3')
sliced = song[start*1000:end*1000]
sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])
И затем я отправляю образец, используя метод bot.send_voice
. Вот так :
bot.send_voice(
chat_id=update.message.chat.id,
voice=open('song.ogg', 'rb'),
caption=settings.caption,
parse_mode=ParseMode.MARKDOWN,
timeout=1000
)
Документация Telegram Bot API гласит:
Используйте этот метод для отправки аудиофайлов, если вы хотите, чтобы клиенты Telegram
отобразить файл как воспроизводимое голосовое сообщение. Чтобы это работало, ваш
звук должен быть в файле .ogg с кодировкой OPUS (другие форматы могут быть
отправлено как аудио или документ).
Вот почему в этой строке кода:
sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])
Я использовал parameters=["-acodec", "libopus"]
.
Может кто-нибудь сказать мне, что я делаю не так? Заранее спасибо!