12

我正在对 Opus 中的 DTX 选项进行一些研究:

不连续传输 (DTX) 会降低静音或背景噪音期间的比特率。启用 DTX 后,每 400 毫秒仅编码一帧。

我想知道是否有一种简单的方法可以让 Opus 在整个静音期的整个持续时间内准确编码一帧,而不是每 400 毫秒编码一次无用的静音帧?

我想在静音或非语音活动期间产生“绝对”静音并最大限度地减少标题的开销,所以基本上安静的录音会产生一个几乎空的文件。

如果有其他编解码器可以做到这一点,我很高兴听到他们的消息。

4

1 回答 1

3

我没有对此进行测试,但我非常有信心可以做到,但是,您将违反以下规定的标准

2.1.9。不连续传输 (DTX)

不连续传输 (DTX) 会降低静音或背景噪音期间的比特率。
启用 DTX 后,每 400 毫秒仅编码一帧。

下载源代码,打开文件 ./silk/define.h 并将第 57 行 [Linux 源代码] 从

#define MAX_CONSECUTIVE_DTX 20 /* eq 400 ms */

类似于

#define MAX_CONSECUTIVE_DTX 40 /* eq 800 ms */

或任何你觉得足够的东西。在不更改源代码的情况下,我认为这是不可能的,因为如此处所述

尽管 Opus 现在已由 IETF 标准化,但此 Opus 实施将在未来不断改进。当然,所有未来版本仍将完全符合 Opus IETF 规范。

于 2020-12-02T21:26:49.877 回答