我做了一个Telegram robot,它的工作之一是从音频文件创建样本。现在,对于发送给它的大多数音频来说,样本是非常好的;类似这样:
然而,对于一些音频,示例看起来有点奇怪:
如您所见,此文件中的波不显示在中!(我可以向你保证,声音不是空的)
为了创建示例,我使用pydub
(谢谢,James!)。下面是我创建示例的部分:
song = AudioSegment.from_mp3('song.mp3')
sliced = song[start*1000:end*1000]
sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])
然后我用bot.send_voice
方法发送样本。Like this:
Telegram Bot API的文档说明:
Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .ogg file encoded with OPUS (other formats may be sent as Audio or Document).
这就是为什么在这一行代码中:
sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])
我用了parameters=["-acodec", "libopus"]
。在
谁能告诉我我做错了什么吗?提前谢谢!在
暗中射击猜测:
刚试过这两首缪斯歌曲,《压力》是一首比《空虚》更响亮的摇滚歌曲。我怀疑电报服务本身只是在进行语音到文本翻译时检测到音乐作为噪音。与语音不同的是,语音之间的动态范围很广,音乐的音量一般都是一样的。因此,每个样品的相对体积是相对相同的-因此,一条平坦的线。在
因为它只发生在一些歌曲上,我相信这些问题与原始歌曲格式有关。确保
pudub
文件参数正确,例如:通道数、采样宽度、帧速率等。有时生成的格式也会更改,因此您可以获得范围为[-1..1](float)的音频,有时可以获得[-32767..32768](整数)的音频。在相关问题 更多 >
编程相关推荐