как преобразовать файл ogg в голосовой формат телеграммы?

Я пытаюсь отправить голосовое сообщение через метод SendVoice в боте телеграммы, но он отправляет голос в виде файла документа (не воспроизводится).

ogg с помощью ffmpeg преобразован в кодировку opus.

https://api.telegram.org/bot<token>/sendVoice?chat_id=x&voice=http://music-farsi.ir/ogg/voice.ogg

В чем разница между моим файлом ogg и голосовым сообщением телеграммы?

Мой файл ogg: файл ogg


person M P    schedule 18.06.2017    source источник
comment
как ты создал свой ogg?   -  person apadana    schedule 19.06.2017
comment
Также приемлемо ли преобразование в другой формат (например, mp3)?   -  person apadana    schedule 19.06.2017
comment
ogg-файл, созданный онлайн-конвертером. да, другой формат принимается телеграммой   -  person M P    schedule 19.06.2017


Ответы (3)


MIME-Type для метода sendVoice должен быть установлен на audio/ogg. Ваш образец настроен на видео/ogg.

Дополнительную информацию о методе sendVoice с URL-адресом можно найти здесь

person Shiffty    schedule 19.06.2017

Благодаря YoilyL я могу отправлять голосовые сообщения со спектрограммой.

Вот мой скрипт Python, который преобразует мой файл .wav в .ogg:

import os
import requests
import subprocess

token = YYYYYYY
chat_id = XXXXXXXX

upload_audio_url = "https://api.telegram.org/bot%s/sendAudio?chat_id=%s" % (token, chat_id)
audio_path_wav = '/Users/me/some-file.wav'

# Convert the file from wav to ogg
filename = os.path.splitext(audio_path_wav)[0]
audio_path_ogg = filename + '.ogg'
subprocess.run(["ffmpeg", '-i', audio_path_wav, '-acodec', 'libopus', audio_path_ogg, '-y'])

with open(audio_path_ogg, 'rb') as f:
    data = f.read()

# An arbitrary .ogg filename has to be present so that the spectogram is shown
file = {'audio': ('Message.ogg', data)}
result = requests.post(upload_audio_url, files=file)

Это приводит к следующему отображению голосового сообщения:

скриншот

Вам нужно будет установить ffmpeg с помощью менеджера пакетов по вашему выбору.

person Besi    schedule 24.11.2019
comment
Пока я не начал преобразовывать ogg vorbis в opus, я получал странные результаты. Иногда телеграмма показывала аудиофайлы как голосовые сообщения, а иногда как аудиофайлы, которые необходимо загрузить и воспроизвести во внешнем проигрывателе. - person italankin; 28.01.2021

если вы хотите, чтобы он отображал аудиоспектрограмму, убедитесь, что ogg закодирован с помощью кодека opus

person Yoily L    schedule 16.10.2018
comment
Мне было интересно, как добиться спектрограммы. Смотрите мой ответ. - person Besi; 24.11.2019