Из документации:
For this to work, your audio must be in an .OGG file encoded with OPUS
То есть, чтобы войс визуализировался, нужно отправлять его в формате .OGG, тогда и продолжительность будет отображаться корректно. А чтобы отображалась продолжительность (duration) при отправке других форматов, нужно явно её указать при отправке.
Важное дополнение для Windows:
1. Скачайте
ffmpeg и распакуйте
2. Добавьте путь в Path
3. Функция на Python:
import subprocess
import io
def mp3_to_ogg(filename, path=''):
with open(f'{path}{filename}.mp3', 'rb') as input_file, open(f'{path}{filename}.ogg', 'wb') as output_file:
mp3_io = io.BytesIO(input_file.read())
ffmpeg_command = ['ffmpeg', '-i', 'pipe:0', '-c:a', 'libopus', '-f', 'ogg', 'pipe:1']
result = subprocess.run(ffmpeg_command, input=mp3_io.read(), capture_output=True)
ogg_bytes = result.stdout
output_file.write(ogg_bytes)
*вы можете изменить функцию, например добавив путь к файлам, использовав временные файлы и т.д.