预测语音数据包 (speex/ilbc c++)

发布于 2024-09-29 16:21:00 字数 312 浏览 13 评论 0原文

一段时间以来,我一直在使用 gsm 编解码器进行网络音频聊天。现在,由于“语音预测”,我想实现像 speex 或 iLBC 这样的功能。据我了解,我需要数据包的时间戳。我还知道,要使编解码器预测语音,我必须向其传递 NULL 数据包。

但我无法理解整个概念! IE: 应用程序发送数据包 1、2、3、4、5、6。我收到 1,2,3,6。我必须做什么?

接收 1 - 播放。

接收 2 - 播放。

接收 3 - 播放。

接收 6 - 嗯...将 4,5 播放为 NULL,然后播放 6 ?

如果丢失太多数据包怎么办?

For some time I've been using gsm codec for network audio chat. Now I'd like to implement smth like speex or iLBC due to "voice prediction". As far as I understand i need timestamps for packets. Also I know that to make codec to predict voice I have to pass it NULL packet for example.

But I cannot understand the entire concept! I.e.:
App sends packets 1,2,3,4,5,6. I receive 1,2,3,6. What must I do?

Receive 1 - Play it.

Receive 2 - Play it.

Receive 3 - Play it.

Receive 6 - Hmm... Play 4,5 as NULL and then play 6 ?

And what if too many packets will be lost?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

桃气十足 2024-10-06 16:21:00

sellibitze 的评论帮助了我:

我认为这个词最适合描述你的身份
试图做的是“丢包
隐藏”。也许这会对你有帮助
进行更好的互联网搜索。这
不是我的专业领域,而是
简单的方法是记住
最新的数据包并正确丢弃它
解码后。如果音频
缓冲区接近空,你需要
保持音频流活动的数据,
然后尝试“编造一些东西”

The comment by sellibitze helped me out:

I think the right term for what you're
trying to do is "packet loss
concealment". Maybe this will help you
perform a better internet search. This
is not my area of expertise, but a
simple approach would be to remember
the newest packet and discard it right
after it was decoded. If the audio
buffers are near empty and you need
data to keep the audio stream alive,
then just try to "make something up"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文