我正在对 Opus 中的 DTX 选项进行一些研究:
不连续传输 (DTX) 会降低静音或背景噪音期间的比特率。启用 DTX 后,每 400 毫秒仅编码一帧。
我想知道是否有一种简单的方法可以让 Opus 在整个静音期的整个持续时间内准确编码一帧,而不是每 400 毫秒编码一次无用的静音帧?
我想在静音或非语音活动期间产生“绝对”静音并最大限度地减少标题的开销,所以基本上安静的录音会产生一个几乎空的文件。
如果有其他编解码器可以做到这一点,我很高兴听到他们的消息。
我正在对 Opus 中的 DTX 选项进行一些研究:
不连续传输 (DTX) 会降低静音或背景噪音期间的比特率。启用 DTX 后,每 400 毫秒仅编码一帧。
我想知道是否有一种简单的方法可以让 Opus 在整个静音期的整个持续时间内准确编码一帧,而不是每 400 毫秒编码一次无用的静音帧?
我想在静音或非语音活动期间产生“绝对”静音并最大限度地减少标题的开销,所以基本上安静的录音会产生一个几乎空的文件。
如果有其他编解码器可以做到这一点,我很高兴听到他们的消息。
我没有对此进行测试,但我非常有信心可以做到,但是,您将违反以下规定的标准:
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 规范。