我正在对Opus中的DTX选项进行一些研究:
不连续传输(DTX)会在静音期间降低比特率 或背景噪音。启用DTX时,只编码一帧 每400毫秒。
我想知道是否有一种简单的方法可以让Opus在整个静默期间只编码一帧,而不是每400毫秒编码一次无用的静音帧?
我希望在静音或非语音活动期间产生“绝对”静音,并尽量减少标题的开销,所以基本上安静的录音会产生一个几乎空的文件。
如果有其他编解码器可以实现这一点,我很乐意听到它们。
答案 0 :(得分:3)
我没有对此进行测试,但是我非常有信心做到这一点,但是,您将打破standards的状态:
2.1.9。不连续传输(DTX)
不连续传输(DTX)降低了静音期间的比特率 或背景噪音。启用DTX时,仅编码一帧
每400毫秒。
Download the source code,打开文件./silk/define.h,然后从第57行[Linux的源代码]更改
#define MAX_CONSECUTIVE_DTX 20 / * eq 400毫秒* /
类似
#define MAX_CONSECUTIVE_DTX 40 / * eq 800毫秒* /
或您觉得足够的任何东西。如果不更改源代码,我认为这是不可能的,因为如上所述here
即使Opus现在已由IETF标准化,但此Opus 实施将在未来不断改善。当然了 未来的版本仍将完全符合Opus IETF 规范。