采样音频不能保留波形(向量)!

7
我制作了一个Telegram机器人,其中之一的任务是从音频文件中创建样本。对于大多数发送给它的音频文件来说,样本都非常好;就像这样:

enter image description here

然而,对于一些音频来说,样本看起来有点奇怪:

enter image description here

如下所示,此文件中的波形图未显示!(我可以保证声音不为空)
为了创建这个样本,我使用了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 方法发送样品。像这样
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 客户端将音频文件显示为可以播放的语音消息,请使用此方法发送音频文件。为使其正常工作,您的音频必须是使用 OPUS 编码的 .ogg 文件(其他格式可能被视为音频或文档发送)。

因此,在以下代码行中:
sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])

我使用了parameters=["-acodec", "libopus"]
有人可以告诉我我做错了什么吗?提前感谢!
2个回答

0

猜测:

刚刚尝试了这两首 Muse 的歌曲,《压力》比《虚空》更具有摇滚气息。我怀疑 Telegram 服务本身在进行语音转文字翻译时,只会将音乐视为噪音。与语音不同,音乐的音量变化范围很小,基本一直保持相同的音量。因此,每个样本的相对音量都是大体相同的,导致出现了平坦的线条。


0

由于这只发生在某些歌曲中,我相信问题与原始歌曲格式有关。确保pudub正确获取文件参数,例如:通道数、采样宽度、帧速率等。有时结果格式也会发生变化,因此您可以获得范围为[-1..1](浮点数)或[-32767..32768](整数)的音频。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接