Я создал робот 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"]
.
Может ли кто-нибудь сказать мне, что я делаю неправильно? Заранее спасибо!