我试图通过电报机器人中的SendVoice方法发送语音消息,但它将语音作为文档文件发送(不播放)。
ffmpeg将ogg文件转换为opus编码。https://api.telegram.org/bot<token>/sendVoice?chat_id=x&voice=http://music-farsi.ir/ogg/voice.ogg
我的ogg文件和电报语音信息有什么区别?
我的ogg档案:ogg file
答案 0 :(得分:1)
sendVoice方法的MIME-Type必须设置为audio / ogg。您的示例设置为video / ogg。
可以找到带有网址的sendVoice方法的更多信息here
答案 1 :(得分:1)
感谢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
。
答案 2 :(得分:0)
如果您希望它显示音频频谱图,请确保ogg使用opus编解码器进行编码