Есть ли способ оптимизировать периоды тишины в Opus лучше, чем это делает DTX?

Я провожу небольшое исследование опции DTX в Opus:

Прерывистая передача (DTX) снижает битрейт во время тишины или фонового шума. Когда DTX включен, только один кадр кодируется каждые 400 миллисекунд.

Интересно, есть ли простой способ заставить Opus кодировать ровно один кадр в течение всего периода молчания вместо того, чтобы кодировать бесполезные кадры молчания каждые 400 миллисекунд?

Я хочу создать «абсолютную» тишину во время беззвучной или неречевой активности и минимизировать накладные расходы на заголовки, поэтому в основном тихая запись приведет к почти пустому файлу.

Если есть другие кодеки, которые могут это сделать, я был бы рад услышать о них.


person prgDevelop    schedule 05.06.2016    source источник
comment
Я думаю, что очень мало пользы, если вы увеличите окно DTX, 400 мс - это уже очень много.   -  person Wilson Chen    schedule 05.12.2017
comment
Разве формат не сжат? Это означает, что последовательные пустые кадры не занимают места.   -  person dagelf    schedule 08.12.2020


Ответы (1)


Я не тестировал это, но я очень уверен, что это возможно, однако вы нарушите стандарты какое состояние:

2.1.9. Прерывистая передача (DTX)

Прерывистая передача (DTX) снижает битрейт во время тишины или фонового шума. Когда DTX включен, только один кадр кодируется
каждые 400 миллисекунд.

Загрузите исходный код, откройте файл. /silk/define.h и измените строку 57 [исходный код для Linux] с

#define MAX_CONSECUTIVE_DTX 20 / * eq 400 мс * /

к чему-то вроде

#define MAX_CONSECUTIVE_DTX 40 / * eq 800 мс * /

или как вы считаете адекватным. Я не думаю, что это возможно без изменения исходного кода, потому что, как указано здесь

Несмотря на то, что Opus сейчас стандартизирован IETF, эта реализация Opus будет улучшаться в будущем. Конечно, все будущие версии по-прежнему будут полностью соответствовать спецификации Opus IETF.

person Dan M    schedule 02.12.2020
comment
Я также должен отметить, что Opus необычен среди спецификаций протокола тем, что он определен в терминах эталонной реализации, а не стандарта прозы. На момент написания этой статьи эталонная реализация Opus приведена в RFC 6716 и 8251. - person Peter O.; 07.12.2020
comment
Разве формат не сжат? Это означает, что последовательные пустые кадры не занимают места. Было бы легко проверить, изменив это значение и посмотрев, есть ли разница в размерах ... в которой я сильно сомневаюсь. - person dagelf; 08.12.2020