ДЕКОДЕР И СПОСОБ ДЕКОДИРОВАНИЯ ДЛЯ МАСКИРОВКИ LC3, ВКЛЮЧАЮЩИЙ В СЕБЯ МАСКИРОВКУ ПОЛНЫХ ПОТЕРЬ КАДРОВ И МАСКИРОВКУ ЧАСТИЧНЫХ ПОТЕРЬ КАДРОВ
DECODER AND DECODING METHOD FOR LC3 MASKING INCLUDING FULL FRAME LOSS MASKING AND PARTIAL FRAME LOSS MASKING

Настоящее изобретение относится к декодеру и к способу декодирования для маскировки  потерь кадров LC3, включающему в себя маскировку полных потерь кадров и маскировку частичных потерь кадров.
Аудиокодеки на основе преобразования основываются на кодированных представлениях спектров аудиокадров. Такие спектры состоят из множества спектральных линий. Вследствие различных причин, некоторые или даже все спектральные линии могут не быть доступными на стороне декодера. Концепции маскировки ошибок в аудиоданных в частотной области, например, могут обеспечивать средство для уменьшения артефактов, вызываемых посредством таких отсутствующих спектральных линий. Стандартный подход заключается в том, чтобы находить максимально возможно хорошие замены для них.
В уровне техники существуют различные технологии маскировки потерь кадров.
Концепции маскировки потерь кадров в частотной области, например, пояснены в [1], в которой упоминаются, в частности, подавление, повторение, замещение шумом и прогнозирование. Эти технологии всегда комбинируются с процессом постепенного затухания, который выполняет постепенное нарастание/затухание сигнала (обычно за несколько потерянных кадров) к нулю либо к некоторому виду фонового шума/комфортного шума.
В [2], различные коэффициенты затухания для полос частот предлагаются в зависимости от энергии в этих полосах частот. Больший коэффициент затухания, например, может применяться для полос частот с энергией выше порогового значения, и меньший коэффициент затухания может применяться для полос частот с энергией ниже этого порогового значения. Кроме того, в [2], энергетические изменения по последним хорошим кадрам наблюдаются, и более сильное затухание применяется, если энергия в последнем хорошем кадре меньше, чем в предпоследнем хорошем кадре.
Кроме того, спектральная форма сигнала также может постепенно нарастать/затухать к некоторой общей форме. Этот подход используется, в частности, в кодеках на основе линейного прогнозирующего кодирования (LPC), например, в EVS (улучшенных голосовых услугах), в которых коэффициенты LPC смешиваются в направлении некоторых предусмотренных средних коэффициентов.
Задача настоящего изобретения состоит в создании усовершенствованных концепций для маскировки ошибок. Задача настоящего изобретения решается посредством декодера по пункту 1 формулы, посредством способа по пункту 39 формулы и посредством компьютерной программы по пункту 40 формулы.
Предусмотрен декодер для декодирования текущего кадра для восстановления аудиосигнала. Аудиосигнал кодируется в текущем кадре. Текущий кадр содержит текущие рабочие данные потока битов. Текущие рабочие данные потока битов содержат множество битов рабочих данных. Множество битов рабочих данных кодируют множество спектральных линий спектра аудиосигнала. Каждый из битов рабочих данных демонстрирует положение в текущих рабочих данных потока битов. Декодер содержит модуль декодирования и выходной интерфейс. Модуль декодирования выполнен с возможностью восстановления аудиосигнала. Выходной интерфейс выполнен с возможностью вывода аудиосигнала. Модуль декодирования содержит режим маскировки ошибок, при этом, если модуль декодирования находится в упомянутом режиме маскировки ошибок, модуль декодирования выполнен с возможностью восстановления аудиосигнала посредством выполнения маскировки ошибок для тех спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту. В качестве альтернативы, если модуль декодирования выполняет маскировку ошибок, модуль декодирования выполнен с возможностью выполнения маскировки ошибок таким способом, который зависит от того, кодируют ли предыдущие рабочие данные потока битов предыдущего кадра, предшествующего текущему кадру, сигнальный компонент аудиосигнала, который является тональным или гармоническим.
Кроме того, предусмотрен способ декодирования текущего кадра для восстановления аудиосигнала. Аудиосигнал кодируется в текущем кадре, при этом текущий кадр содержит текущие рабочие данные потока битов, при этом текущие рабочие данные потока битов содержат множество битов рабочих данных. Множество битов рабочих данных кодируют множество спектральных линий спектра аудиосигнала. Каждый из битов рабочих данных демонстрирует положение в текущих рабочих данных потока битов. Способ содержит:
- восстановление аудиосигнала, при этом в режиме маскировки ошибок восстановление аудиосигнала выполняется посредством выполнения маскировки ошибок для тех спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту; и/или, если выполняется маскировка ошибок, маскировка ошибок выполняется таким способом, который зависит от того, кодируют ли предыдущие рабочие данные потока битов предыдущего кадра, предшествующего текущему кадру, сигнальный компонент аудиосигнала, который является тональным или гармоническим; и
- вывод аудиосигнала.
Кроме того, предусмотрена компьютерная программа для реализации вышеописанного способа при выполнении на компьютере или в процессоре сигналов.
В некоторых обстоятельствах, концепции маскировки ошибок, например, могут применяться к целому кадру, например, если целый кадр потерян или отмечается в качестве недопустимого, либо (даже если части спектра доступны) если маскировка полных потерь кадров считается самой лучшей стратегией маскировки ошибок.
Тем не менее, в других обстоятельствах, технологии маскировки ошибок, например, могут применяться только к части кадра, если части спектра доступны.
Обстоятельства, при которых доступны части спектра, например, могут возникать при масштабируемом кодировании, например, при масштабируемом AAC, SLS AAC или BSAC, при котором принимаются некоторые слои, а другие не принимаются (AAC = усовершенствованное кодирование аудио, SLS = масштабируемое к состоянию «без потерь», BSAC = арифметическое кодирование с побитовым разделением на срезы).
В качестве альтернативы, части спектра, например, могут быть доступными при избыточном кадровом кодировании, при котором доступна избыточная низкокачественная копия потерянного кадра, т.е. в контексте VoIP или VoLTE (см., например, [3] и [4] для получения дополнительной информации в отношении надежности и устойчивости к ошибкам в VoIP и VoLTE; VoIP =  голосовая связь по IP/голосовая связь по Интернет-протоколу; VoLTE = голосовая связь по LTE / голосовая связь по Стандарту долгосрочного развития).
В качестве альтернативы, части спектра, например, могут быть доступными, когда выполняется избирательное обнаружение ошибок, например, в AAC с RVLC (обратимым кодированием переменной длины) для данных коэффициентов масштабирования, в котором определенные коэффициенты масштабирования могут обнаруживаться поврежденными, приводя к определенному числу поврежденных спектральных линий; либо, например, в LC3 для DECT (усовершенствованного стандарта цифровой беспроводной связи), в котором ошибки в кодированном представлении частей спектра (представляющем психоакустически менее важный спектральный диапазон) могут обнаруживаться отдельно.
Ниже более подробно описаны варианты осуществления настоящего изобретения с обращением к чертежам, на которых:
Фиг. 1 иллюстрирует декодер для декодирования текущего кадра для восстановления части аудиосигнала для аудиосигнала согласно варианту осуществления.
Фиг. 2 иллюстрирует модуль декодирования согласно конкретному варианту осуществления.
Фиг. 3 иллюстрирует общее представление модуля декодирования согласно варианту осуществления для чистого канального декодирования.
Фиг. 4 иллюстрирует общее представление модуля декодирования согласно варианту осуществления для маскировки полных потерь кадров.
Фиг. 5 иллюстрирует общее представление модуля декодирования согласно варианту осуществления для маскировки частичных потерь кадров.
Фиг. 6 иллюстрирует функцию постепенного нарастания/затухания согласно варианту осуществления, которая зависит от числа потерянных кадров в строке и которая дополнительно зависит от длины кадра.
Фиг. 7 иллюстрирует пороговое значение для скремблирования знаков согласно варианту осуществления, которое зависит от числа потерянных кадров в строке и которое дополнительно зависит от длины кадра.
Фиг. 8 иллюстрирует пороговый коэффициент энергии согласно варианту осуществления, который зависит от числа потерянных кадров в строке и который дополнительно зависит от длины кадра.
Фиг. 9 иллюстрирует нелинейное затухание согласно варианту осуществления, которое зависит от числа потерянных кадров в строке.
Фиг. 1 иллюстрирует декодер 100 для декодирования текущего кадра для восстановления аудиосигнала согласно варианту осуществления.
Аудиосигнал кодируется в текущем кадре. Текущий кадр содержит текущие рабочие данные потока битов. Текущие рабочие данные потока битов содержат множество битов рабочих данных. Множество битов рабочих данных кодируют множество спектральных линий спектра аудиосигнала. Каждый из битов рабочих данных демонстрирует положение в текущих рабочих данных потока битов.
Декодер 100 содержит модуль 110 декодирования и выходной интерфейс 120.
Модуль 110 декодирования выполнен с возможностью восстановления аудиосигнала.
Выходной интерфейс 120 выполнен с возможностью вывода аудиосигнала.
Модуль 110 декодирования содержит режим маскировки ошибок, при этом, если модуль 110 декодирования находится в упомянутом режиме маскировки ошибок, модуль 110 декодирования выполнен с возможностью восстановления аудиосигнала посредством выполнения маскировки ошибок для тех спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту.
В качестве альтернативы, если маскировка ошибок выполняется посредством модуля 110 декодирования, модуль 110 декодирования выполнен с возможностью выполнения маскировки ошибок таким способом, который зависит от того, кодируют ли предыдущие рабочие данные потока битов предыдущего кадра, предшествующего текущему кадру, сигнальный компонент аудиосигнала, который является тональным или гармоническим.
В некоторых вариантах осуществления, модуль декодирования, например, может находиться в упомянутом режиме маскировки ошибок, если текущие рабочие данные потока битов текущего кадра содержат некорректируемые ошибки, и/или если текущий кадр потерян. Текущие рабочие данные потока битов, например, могут содержать некорректируемые ошибки, если ошибка по-прежнему имеется после того, как коррекция ошибок выполняется посредством декодера 100; либо если текущие рабочие данные потока битов содержат ошибку, и коррекция ошибок не выполняется вообще. Кадр, содержащий некорректируемые ошибки, может называться, например, «поврежденным кадром».
Например, согласно варианту осуществления, конкретные параметры маскировки ошибок, например, могут быть конфигурированы в зависимости от того, кодируют ли упомянутые предыдущие рабочие данные потока битов упомянутого предыдущего кадра, предшествующего текущему кадру, упомянутый сигнальный компонент аудиосигнала, который является тональным или гармоническим.
Согласно варианту осуществления, предыдущий кадр, например, может представлять собой последний принимаемый кадр, который декодирован посредством модуля 110 декодирования без выполнения маскировки ошибок в режиме маскировки полных потерь кадров.
Ниже по тексту более подробно описаны варианты осуществления.
Спектр, например, может считаться подразделенным на те спектральные линии, которые доступны и которые должны использоваться, и те спектральные линии, которые не доступны или которые не должны использоваться (например, хотя они, например, могут быть доступными).
Согласно некоторым вариантам осуществления, например, можно продолжать следующим образом.
В некоторых ситуациях, все спектральные линии доступны и должны использоваться, и в силу этого маскировка потерь кадров, например, может не выполняться.
В других ситуациях, определенные спектральные линии доступны и должны использоваться, и маскировка частичных потерь кадров, например, может выполняться в отсутствующих спектральных линиях.
В других ситуациях спектральные линии не доступны или не должны использоваться, и может выполняться, например, маскировка полных потерь кадров.
Ниже по тексту описана маскировка ошибок в зависимости от тональности согласно некоторым вариантам осуществления.
В варианте осуществления, если модуль 110 декодирования выполняет маскировку ошибок, модуль 110 декодирования, например, может быть выполнен с возможностью восстановления текущего спектра аудиосигнала посредством выполнения маскировки ошибок с использованием множества знаков предыдущего спектра аудиосигнала, причем упомянутое множество знаков кодируются в предыдущем кадре, при этом модуль 110 декодирования, например, может быть выполнен с возможностью выполнения маскировки ошибок таким способом, который зависит от того, кодирует ли упомянутый предыдущий кадр сигнальный компонент, который является тональным или гармоническим. Например, параметры для маскировки ошибок, например, могут выбираться различными способами в зависимости от того, является сигнальный компонент тональным или гармоническим.
В варианте осуществления, упомянутый предыдущий кадр, например, может представлять собой последний принимаемый кадр, который декодирован посредством модуля 110 декодирования без выполнения маскировки ошибок. В качестве альтернативы, упомянутый предыдущий кадр, например, может представлять собой последний принимаемый кадр, который декодирован посредством модуля 110 декодирования без выполнения маскировки ошибок в режиме маскировки полных потерь кадров. В качестве альтернативы, упомянутый предыдущий кадр, например, может представлять собой последний принимаемый кадр, который декодирован посредством модуля 110 декодирования без выполнения маскировки ошибок в режиме маскировки частичных потерь кадров или в режиме маскировки полных потерь кадров.
Согласно варианту осуществления, если модуль 110 декодирования выполняет маскировку ошибок, и если предыдущие рабочие данные потока битов предыдущего кадра кодируют сигнальный компонент, который является тональным или гармоническим, модуль 110 декодирования, например, может быть выполнен с возможностью изменения на противоположный одного или более знаков из множества знаков предыдущего спектра таким образом, чтобы восстановить текущий спектр, при этом процентное значение p, указывающее вероятность изменения на противоположный для знака из множества знаков предыдущего спектра посредством модуля 110 декодирования, чтобы восстановить текущий спектр, например, может составлять между 0%≤p≤50%, при этом модуль 110 декодирования, например, может быть выполнен с возможностью определения процентного значения p. В варианте осуществления, модуль 110 декодирования, например, может использовать последовательность псевдослучайных чисел для определения, должен ли фактически изменяться на противоположный рассматриваемый знак предыдущего спектра, в зависимости от процентного значения p.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью увеличения процентного значения p в зависимости от числа последующих кадров. Упомянутое число последующих кадров, например, может указывать, для скольких последующих (частично или полностью) потерянных кадров модуль 110 декодирования выполняет маскировку ошибок; либо при этом упомянутое число последующих кадров, например, может указывать, для скольких последующих кадров маскировка ошибок в конкретном режиме маскировки ошибок выполняется посредством модуля 110 декодирования.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения процентного значения p в зависимости от функции, которая зависит от упомянутого числа последующих кадров, причем упомянутое число последующих кадров представляет собой аргумент упомянутой функции.
Согласно варианту осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения процентного значения p таким образом, что p равно 0%, если упомянутое число последующих кадров меньше первого порогового значения; таким образом, что 0%≤≤p≤50%, если упомянутое число последующих кадров больше или равно первому пороговому значению и меньше второго порогового значения, и таким образом, что p=50%, если упомянутое число последующих кадров больше второго порогового значения.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения процентного значения p таким образом, что процентное значение p увеличивается линейно в диапазоне между первым пороговым значением и вторым пороговым значением в зависимости от числа последующих кадров.
Согласно варианту осуществления, если модуль 110 декодирования выполняет маскировку ошибок, и если предыдущие рабочие данные потока битов предыдущего кадра не кодируют сигнальный компонент, который является тональным или гармоническим, модуль 110 декодирования, например, может быть выполнен с возможностью изменения на противоположный 50% множества знаков предыдущего спектра таким образом, чтобы восстановить текущий спектр.
В варианте осуществления, если модуль 110 декодирования выполняет маскировку ошибок, модуль 110 декодирования, например, может быть выполнен с возможностью восстановления текущего спектра аудиосигнала посредством выполнения маскировки ошибок с использованием множества амплитуд предыдущего спектра аудиосигнала в зависимости от того, кодирует ли предыдущий кадр сигнальный компонент, который является тональным или гармоническим, причем упомянутое множество амплитуд кодируются в предыдущем кадре.
Согласно варианту осуществления, если модуль 110 декодирования выполняет маскировку ошибок, модуль 110 декодирования, например, может быть выполнен с возможностью обеспечения затухания множества амплитуд предыдущего спектра согласно характеристике нелинейного затухания, чтобы восстановить текущий спектр, при этом характеристика нелинейного затухания зависит от того, кодируют ли предыдущие рабочие данные потока битов предыдущего кадра сигнальный компонент, который является тональным или гармоническим. Например, параметры для характеристики нелинейного затухания, например, могут выбираться различным способом в зависимости от того, является сигнальный компонент тональным или гармоническим.
В варианте осуществления, если модуль 110 декодирования выполняет маскировку ошибок, и если предыдущие рабочие данные потока битов предыдущего кадра кодируют сигнальный компонент, который является тональным или гармоническим, модуль 110 декодирования, например, может быть выполнен с возможностью обеспечения затухания множества амплитуд предыдущего спектра в зависимости от коэффициента стабильности, при этом упомянутый коэффициент стабильности указывает подобие между текущим спектром и предыдущим спектром; либо при этом коэффициент стабильности указывает подобие между предыдущим спектром и предпредыдущим спектром предпредыдущего кадра, предшествующего предыдущему кадру.
Согласно варианту осуществления, упомянутый предпредыдущий кадр, например, может представлять собой последний принимаемый кадр перед предыдущим кадром, который декодирован посредством модуля 110 декодирования без выполнения маскировки ошибок. В качестве альтернативы, упомянутый предпредыдущий кадр, например, может представлять собой последний принимаемый кадр перед предыдущим кадром (например, предпоследний принимаемый кадр), который декодирован посредством модуля 110 декодирования без выполнения маскировки ошибок в режиме маскировки полных потерь кадров. В качестве альтернативы, упомянутый предпредыдущий кадр, например, может представлять собой последний принимаемый кадр перед предыдущим кадром, который декодирован посредством модуля 110 декодирования без выполнения маскировки ошибок в режиме маскировки частичных потерь кадров или в режиме маскировки полных потерь кадров.
В варианте осуществления, упомянутый коэффициент стабильности, например, может указывать упомянутое подобие между текущим спектром и предыдущим спектром, если модуль 110 декодирования выполнен с возможностью выполнения маскировки частичных потерь кадров. Упомянутый коэффициент стабильности, например, может указывать упомянутое подобие между предыдущим спектром и предпредыдущим спектром, если модуль 110 декодирования выполнен с возможностью выполнения маскировки полных потерь кадров.
Согласно варианту осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения энергии спектрального элемента разрешения предыдущего спектра. Кроме того, модуль 110 декодирования, например, может быть выполнен с возможностью определения, является ли упомянутая энергия упомянутого спектрального элемента разрешения меньшей, чем пороговое значение энергии. Если упомянутая энергия меньше упомянутого порогового значения энергии, модуль 110 декодирования, например, может быть выполнен с возможностью обеспечения затухания амплитуды из множества амплитуд, назначаемых упомянутому спектральному элементу разрешения с первым коэффициентом постепенного нарастания/затухания. Если упомянутая энергия больше или равна упомянутому пороговому значению энергии, модуль 110 декодирования, например, может быть выполнен с возможностью обеспечения затухания упомянутой амплитуды из множества амплитуд, назначаемых упомянутому спектральному элементу разрешения со вторым коэффициентом постепенного нарастания/затухания, меньшим первого коэффициента постепенного нарастания/затухания. Модуль 110 декодирования, например, может быть выполнен с возможностью выполнения затухания таким образом, что посредством использования меньшего коэффициента постепенного нарастания/затухания для затухания одной из множества амплитуд, затухание упомянутых одной из амплитуд увеличивается.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения энергии полосы частот спектра, содержащей множество спектральных элементов разрешения предыдущего спектра. Модуль 110 декодирования, например, может быть выполнен с возможностью определения, является ли упомянутая энергия упомянутой полосы частот спектра меньшей, чем пороговое значение энергии. Если упомянутая энергия меньше упомянутого порогового значения энергии, модуль 110 декодирования, например, может быть выполнен с возможностью обеспечения затухания амплитуды из множества амплитуд, назначаемых упомянутому спектральному элементу разрешения упомянутой полосы частот спектра с первым коэффициентом постепенного нарастания/затухания. Если упомянутая энергия больше или равна упомянутому пороговому значению энергии, модуль 110 декодирования, например, может быть выполнен с возможностью обеспечения затухания упомянутой амплитуды из множества амплитуд, назначаемых упомянутому спектральному элементу разрешения упомянутой полосы частот спектра со вторым коэффициентом постепенного нарастания/затухания, меньшим первого коэффициента постепенного нарастания/затухания. Модуль 110 декодирования, например, может быть выполнен с возможностью выполнения затухания таким образом, что посредством использования меньшего коэффициента постепенного нарастания/затухания для затухания одной из множества амплитуд, затухание упомянутых одной из амплитуд увеличивается.
Согласно варианту осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения первого коэффициента постепенного нарастания/затухания таким образом, что в зависимости от упомянутого числа последующих кадров, первый коэффициент постепенного нарастания/затухания становится меньшим. Кроме того, модуль 110 декодирования, например, может быть выполнен с возможностью определения второго коэффициента постепенного нарастания/затухания таким образом, что в зависимости от упомянутого числа последующих кадров, второй коэффициент постепенного нарастания/затухания становится меньшим.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения первого коэффициента постепенного нарастания/затухания и второй коэффициент постепенного нарастания/затухания таким образом, что:
cum_fading_slow=1, и
cum_fading_fast=1,
- если текущий кадр представляет собой первый кадр из числа последующих кадров, и в силу этого если текущий кадр представляет собой один из кадров, следующих за первым кадром из числа последующих кадров, первый коэффициент постепенного нарастания/затухания и второй коэффициент постепенного нарастания/затухания, например, могут определяться в зависимости от упомянутого числа последующих кадров согласно следующему:
cum_fading_slow=cum_fading_slow*slow;
cum_fading_fast=cum_fading_fast*fast;
- при этом cum_fading_slow в правой части формулы является первым коэффициентом постепенного нарастания/затухания предыдущего кадра (например, инициализированным с 1 в первом потерянном кадре), при этом cum_fading_slow в левой части формулы является первым коэффициентом постепенного нарастания/затухания текущего кадра, при этом cum_fading_fast в правой части формулы является вторым коэффициентом постепенного нарастания/затухания предыдущего кадра (например, инициализированным с 1 в первом потерянном кадре), при этом cum_fading_fast в левой части формулы является вторым коэффициентом постепенного нарастания/затухания текущего кадра, при этом 1>slow>fast>0.
Согласно варианту осуществления, 1>slow>fast>0,3.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения упомянутого порогового значения энергии таким образом, что упомянутое пороговое значение энергии равно первому значению энергии, если упомянутое число последующих кадров меньше третьего порогового значения; таким образом, что упомянутое пороговое значение энергии меньше упомянутого первого значения энергии и больше второго значения энергии, если упомянутое число последующих кадров больше или равно третьему пороговому значению и меньше четвертого порогового значения; и таким образом, что упомянутое пороговое значение энергии равно упомянутому второму значению энергии, если упомянутое число последующих кадров больше четвертого порогового значения.
Согласно варианту осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения порогового значения энергии таким образом, что пороговое значение энергии снижается линейно в диапазоне между третьим пороговым значением и четвертым пороговым значением в зависимости от числа последующих кадров.
Для тех спектральных линий, которые не доступны или которые не должны использоваться, формируются замены, тогда как, в зависимости от тональности ранее принимаемого сигнала и, если эта информация доступна, в зависимости от тональности текущего принимаемого сигнала, определенная степень тональности сохраняется.
Большая тональность сохраняется, если индикатор(ы) указывают то, что последний хороший сигнал является тональным.
Меньшая тональность сохраняется, если индикатор(ы) указывают то, что последний хороший сигнал не является тональным.
Тональность главным образом представляется посредством взаимосвязей фаз между различными элементами разрешения в одном кадре и/или взаимосвязей фаз идентичного элемента разрешения для последующих кадров.
Некоторые варианты осуществления акцентируют внимание на первом аспекте, а именно, на том, что тональность главным образом представляется посредством взаимосвязей фаз между различными элементами разрешения в одном кадре.
Фазы различных элементов разрешения в одном кадре главным образом характеризуются посредством их знаков, но также и посредством взаимосвязи амплитуды соседних элементов разрешения. Следовательно, сохранение взаимосвязи амплитуд, а также сохранение знаков приводит к высокосохраняемой тональности. Наоборот, чем больше взаимосвязь амплитуд и/или знаков изменяется между последующими элементами разрешения, тем меньшая тональность сохраняется.
Ниже описано манипулирование знаками согласно некоторым вариантам осуществления.
Из уровня техники известны два подхода:
Согласно первому подходу применяется повторение кадров. Знаки сохраняются из предыдущего спектра.
Во втором подходе выполняется замещение шумом. Знаки скремблируются относительно предыдущего спектра; случайно 50% знаков изменяются на противоположные.
Для невокализованных сигналов замещение шумом обеспечивает хорошие результаты.
Для вокализованных сигналов вместо этого может использоваться повторение кадров, но для больших потерь сохраняемая тональность (которая является предпочтительной в начале потерь) может становиться раздражающей.
Варианты осуществления основаны на таких выявленных сведениях, что для вокализованных сигналов требуется переходная фаза между повторением кадров и замещением шума.
Согласно некоторым вариантам осуществления, это, например, может достигаться посредством случайного изменения на противоположный определенной процентной доли от знаков в расчете на кадр, причем эта процентная доля составляет между 0% и 50% и увеличивается во времени.
Ниже описано манипулирование амплитудой согласно некоторым вариантам осуществления.
Простейший способ, часто используемый в уровне техники, заключается в применении определенного коэффициента затухания ко всем частотным элементам разрешения. Этот коэффициент затухания увеличивается между кадрами, чтобы достигать плавного постепенного затухания. Скорость постепенного затухания может быть фиксированной или может зависеть от характеристик сигналов. При этом подходе, взаимосвязь абсолютной величины соседних элементов разрешения, а также спектральная форма целого кадра сохраняется.
Также в уровне техники известно затухание для каждой полосы частот с использованием различных коэффициентов затухания в зависимости от энергии в каждой полосе частот. Хотя этот подход также сохраняет взаимосвязь абсолютной величины соседних элементов разрешения в каждой полосе частот, спектральная форма целого кадра сглаживается.
Согласно некоторым вариантам осуществления, элементы разрешения с большими значениями затухают сильнее элементов разрешения с меньшими значениями. Для этого, некоторые варианты осуществления, например, могут задавать характеристику нелинейного затухания. Эта характеристика нелинейного затухания предотвращает перерегулирование, которое может возникать в противном случае, поскольку подавление наложения спектров не гарантируется во время суммирования с перекрытием и изменяет взаимосвязь абсолютной величины соседних элементов разрешения, что приводит к более плоской спектральной форме. Чтобы сглаживать спектральную форму. Некоторые варианты осуществления основаны на таких выявленных сведениях, что соотношение абсолютной величины соседних элементов разрешения должно оставаться выше единицы, если оно составляет выше единицы ранее; и что соотношение должно оставаться ниже единицы, если составляет ниже единицы ранее.
Чтобы корректно применять это затухание, в некоторых вариантах осуществления, нелинейная характеристика, например, может быть небольшой в начале потерь и, например, затем может увеличиваться. В вариантах осуществления, ее регулирование во времени, например, может зависеть от тональности сигнала. Согласно некоторым вариантам осуществления, для невокализованных сигналов, нелинейность, например, может быть более сильной, чем для вокализованных сигналов.
Такая характеристика нелинейного затухания оказывает влияние на спектральную форму. В вариантах осуществления, спектр, например, может становиться более плоским во времени, что уменьшает вероятность раздражающих синтетических звуковых артефактов во время потерь пакетов.
Ниже по тексту описана маскировка частичных потерь кадров согласно некоторым вариантам осуществления.
Согласно варианту осуществления, упомянутый режим маскировки ошибок, например, может представлять собой режим маскировки частичных потерь кадров, при этом если модуль 110 декодирования находится в режиме маскировки частичных потерь кадров, модуль 110 декодирования, например, может быть выполнен с возможностью восстановления аудиосигнала без выполнения маскировки ошибок для одной или более первых спектральных линий из множества спектральных линий спектра, которые демонстрируют частоту, меньшую или равную пороговой частоте, при этом упомянутые одна или более первых спектральный линий кодированы посредством первой группы из одного или более из множества битов рабочих данных. Кроме того, модуль 110 декодирования, например, может быть выполнен с возможностью восстановления аудиосигнала посредством выполнения маскировки ошибок для одной или более вторых спектральных линий из множества спектральных линий спектра, которые демонстрируют частоту, превышающую пороговую частоту, при этом упомянутые одна или более вторых спектральных линий кодированы посредством второй группы из одного или более из множества битов рабочих данных.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью обнаружения, содержит ли текущий кадр поврежденные биты, кодирующие упомянутые одну или более первых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, меньшую или равную пороговой частоте. Кроме того, модуль 110 декодирования, например, может быть выполнен с возможностью обнаружения, содержит ли текущий кадр один или более поврежденных битов, кодирующих упомянутые одну или более вторых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту. Упомянутый один или более поврежденных битов представляют собой один или более битов рабочих данных, которые искажаются или которые с большой вероятностью должны искажаться. Если текущий кадр не содержит поврежденных битов, кодирующих упомянутые одну или более первых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, меньшую или равную пороговой частоте, и если текущий кадр содержит упомянутый один или более поврежденных битов, кодирующих упомянутые одну или более вторых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту, модуль 110 декодирования, например, может быть выполнен с возможностью выполнения маскировки ошибок в режиме маскировки частичных потерь кадров посредством выполнения маскировки ошибок для упомянутых одной или более вторых спектральных линий спектра, которые больше пороговой частоты.
Согласно варианту осуществления, если текущий кадр не содержит поврежденных битов, кодирующих упомянутые одну или более первых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, меньшую или равную пороговой частоте, и если текущий кадр содержит упомянутый один или более поврежденных битов, кодирующих упомянутые одну или более вторых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту, модуль 110 декодирования, например, может быть выполнен с возможностью восстановления аудиосигнала посредством декодирования упомянутой первой группы упомянутых одного или более из множества битов рабочих данных, которые кодируют упомянутые одну или более первых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, меньшую или равную пороговой частоте.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью обнаружения, потерян ли текущий кадр, при этом если декодер 100 обнаруживает, что текущий кадр потерян, модуль 110 декодирования, например, может быть выполнен с возможностью восстановления аудиосигнала посредством выполнения маскировки ошибок для упомянутых одной или более вторых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту. Кроме того, модуль 110 декодирования, например, может быть выполнен с возможностью декодирования без выполнения маскировки ошибок для упомянутой первой группы, причем упомянутая первая группа состоит из упомянутых одного или более из множества битов рабочих данных, которые кодируют упомянутые одну или более первых спектральных линий для упомянутых одной или более первых частот спектра аудиосигнала, меньших или равных пороговой частоте, при этом упомянутая первая группа из упомянутых одного или более из множества битов рабочих данных представляет собой один или более битов рабочих данных избыточного кадра, отличающегося от текущего кадра.
В варианте осуществления, избыточный кадр, например, может представлять собой версию с ограниченной полосой пропускания текущего кадра. Например, избыточный кадр может, например, обеспечивать данные (например, уменьшенный набор данных по сравнению с текущим кадром), которые кодируют аудиосигнал для периода времени, идентичного периоду времени текущего кадра. Эти данные, например, могут отличаться для множества битов рабочих данных, которые кодируют аудиосигнал упомянутых одной или более первых спектральных линий для упомянутых одной или более первых частот спектра аудиосигнала, меньших или равных пороговой частоте, поскольку они кодируются с меньшим количеством битов, чем текущий кадр упомянутых первых частот спектра для идентичного периода времени текущего кадра.
В варианте осуществления, если модуль 110 декодирования выполнен с возможностью выполнения маскировки ошибок в режиме маскировки полных потерь кадров, модуль 110 декодирования выполнен с возможностью выполнения маскировки ошибок для всех спектральных линий (целого) спектра (в иных случаях восстанавливаемых посредством всех битов рабочих данных для текущих рабочих данных потока битов текущего кадра).
Согласно варианту осуществления, множество битов рабочих данных представляют собой множество текущих битов рабочих данных. Если модуль 110 декодирования находится в режиме маскировки частичных потерь кадров, модуль 110 декодирования, например, может быть выполнен с возможностью выполнения маскировки ошибок для упомянутых одной или более вторых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту, с использованием одной или более сохраненных спектральных линий, которые кодированы посредством одного или более предыдущих битов рабочих данных для предыдущих рабочих данных потока битов предыдущего кадра.
В варианте осуществления, спектр, например, может представлять собой текущий квантованный спектр. Если модуль 110 декодирования выполняет маскировку ошибок в режиме маскировки частичных потерь кадров, модуль 110 декодирования, например, может быть выполнен с возможностью выполнения маскировки ошибок для упомянутых одной или более вторых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту, чтобы получать одну или более промежуточных спектральных линий упомянутого текущего квантованного спектра.
Согласно варианту осуществления, спектр представляет собой текущий квантованный спектр. Если модуль 110 декодирования выполняет маскировку ошибок в режиме маскировки частичных потерь кадров, модуль 110 декодирования, например, может быть выполнен с возможностью выполнения маскировки ошибок для упомянутых одной или более вторых спектральных линий спектра аудиосигнала, которые демонстрируют частоту, превышающую пороговую частоту, чтобы получать одну или более промежуточных спектральных линий упомянутого текущего квантованного спектра, при этом модуль 110 декодирования, например, может быть выполнен с возможностью повторного масштабирования одной или более промежуточных спектральных линий с использованием коэффициента повторного масштабирования для восстановления аудиосигнала.
В варианте осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения коэффициента повторного масштабирования в зависимости по меньшей мере от одного из следующего:
--- глобальное усиление, кодируемое в упомянутых текущих рабочих данных потока битов, и
--- глобальное усиление, кодируемое в упомянутых предыдущих рабочих данных потока битов, и
--- энергия предыдущего квантованного спектра упомянутого предыдущего кадра,
--- энергия предыдущего декодированного спектра упомянутого предыдущего кадра, и
--- энергия упомянутого текущего квантованного спектра упомянутого текущего кадра.
Согласно варианту осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения коэффициента повторного масштабирования в зависимости от того:
--- является ли средняя энергия спектральных элементов разрешения предыдущего декодированного спектра предыдущего кадра, начиная с первого спектрального элемента разрешения, который не может восстанавливаться без выполнения маскировки ошибок вплоть до начала спектра, большей или равной средней энергии спектральных элементов разрешения предыдущего декодированного спектра предыдущего кадра, начиная с нуля вплоть до упомянутого последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок, или
--- является ли энергия спектральных элементов разрешения упомянутого текущего квантованного спектра текущего кадра, начиная с нуля вплоть до упомянутого последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок, большей или равной энергии спектральных элементов разрешения предыдущего квантованного спектра предыдущего кадра, начиная с нуля вплоть до упомянутого последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок.
В варианте осуществления:
--- если средняя энергия спектральных элементов разрешения предыдущего декодированного спектра предыдущего кадра, начиная с упомянутого первого спектрального элемента разрешения, который не может восстанавливаться без выполнения маскировки ошибок вплоть до начала спектра, меньше средней энергии спектральных элементов разрешения предыдущего декодированного спектра предыдущего кадра, начиная с нуля вплоть до упомянутого последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок, и
--- если энергия спектральных элементов разрешения упомянутого текущего квантованного спектра текущего кадра, начиная с нуля вплоть до упомянутого последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок, меньше энергии спектральных элементов разрешения предыдущего квантованного спектра предыдущего кадра, начиная с нуля вплоть до упомянутого последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок, модуль 110 декодирования, например, может быть выполнен с возможностью определения коэффициента повторного масштабирования таким образом, что коэффициент повторного масштабирования равен квадратному корню соотношения:
--- энергии спектральных элементов разрешения текущего квантованного спектра, начиная с нуля вплоть до упомянутого последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок, умноженной на квадрат коэффициента усиления текущего кадра,
- к
--- энергии спектральных элементов разрешения предыдущего квантованного спектра, начиная с нуля вплоть до упомянутого последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок, умноженной на квадрат коэффициента усиления предыдущего кадра.
Согласно варианту осуществления, модуль 110 декодирования, например, может быть выполнен с возможностью определения коэффициента повторного масштабирования, представляющего собой общий коэффициент повторного масштабирования, в зависимости от коэффициента повторного масштабирования глобального усиления, при этом модуль 110 декодирования, например, может быть выполнен с возможностью определения коэффициента повторного масштабирования глобального усиления согласно следующему:
prev
gg
- при этом gg указывает глобальное усиление текущего кадра, и при этом gg указывает глобальное усиление упомянутого предыдущего кадра, и при этом fac является коэффициентом повторного масштабирования глобального усиления.
В варианте осуществления:
если , или
если ,
be
F
модуль 110 декодирования, например, может быть выполнен с возможностью определения, что общий коэффициент повторного масштабирования равен коэффициенту повторного масштабирования глобального усиления, при этом k указывает спектральный элемент разрешения, при этом k указывает первый спектральный элемент разрешения, который не может восстанавливаться, при этом N указывает число спектральных линий, при этом  указывает предыдущий квантованный спектр предыдущего кадра, представляющего собой последний кадр маскировки неполных потерь кадров, при этом  указывает текущий квантованный спектр текущего кадра, при этом  указывает предыдущий декодированный спектр предыдущего кадра, представляющий собой упомянутый последний кадр маскировки неполных потерь кадров.
Согласно варианту осуществления:
если , и
если ,
модуль 110 декодирования, например, может быть выполнен с возможностью определения, что общий коэффициент повторного масштабирования, помимо прочего, зависит от коэффициента повторного масштабирования энергии:
который, например, может использоваться для того, чтобы формировать общий коэффициент повторного масштабирования:
ener
be
F
- при этом fac указывает коэффициент повторного масштабирования энергии, при этом k указывает спектральный элемент разрешения, при этом k указывает первый спектральный элемент разрешения, который не может восстанавливаться, при этом N указывает число спектральных линий, при этом  указывает предыдущий квантованный спектр предыдущего кадра, представляющего собой последний кадр маскировки неполных потерь кадров, при этом  указывает текущий квантованный спектр текущего кадра, при этом  указывает предыдущий декодированный спектр предыдущего кадра, представляющий собой упомянутый последний кадр маскировки неполных потерь кадров.
В сценарии, в котором применяется маскировка частичных потерь кадров, предполагается или определено то, что более чувствительные биты рабочих данных потока битов являются безошибочными.
be
В вариантах осуществления, квантованный спектр  кадра, например, может восстанавливаться вплоть до определенного частотного элемента разрешения, здесь называемого «частотным элементом разрешения k-1». Маскировка частичных потерь кадров в силу этого просто скрывает квантованные спектральные линии выше этой частоты.
При выполнении маскировки частичных потерь кадров согласно некоторым вариантам осуществления, спектральные линии квантованного спектра последнего кадра, не относящегося к FFLC , например, могут многократно использоваться (FFLC=маскировка полных потерь кадров).
Для исключения высокоэнергетических артефактов в переходных кадрах, изменяющихся по энергии, скрытые спектральные линии в дальнейшем повторно масштабируются, тогда как результирующий коэффициент повторного масштабирования, например, может зависеть по меньшей мере от одного из следующего:
a) глобальные усиления;
b) энергии спектров;
Предпочтительно, результирующий коэффициент повторного масштабирования, например, может зависеть как от глобальных усилений, так и от энергий спектров.
Коэффициент повторного масштабирования на основе глобальных усилений равен соотношению предыдущего глобального усиления к текущему глобальному усилению.
Коэффициент повторного масштабирования на основе энергий инициализируется с 1 (например, повторное масштабирование не выполняется/например, повторное масштабирование не имеет эффекта):
be
be
--- если средняя энергия спектральных элементов разрешения предыдущего декодированного спектра, начиная с частотного элемента k разрешения (первого спектрального элемента разрешения, который не может восстанавливаться без выполнения маскировки ошибок) вплоть до начала спектра больше или равна средней энергии спектральных элементов разрешения предыдущего декодированного спектра, начиная с нуля вплоть до частотного элемента k-1 разрешения (последнего спектрального элемента разрешения, который может восстанавливаться без выполнения маскировки ошибок); или
be
be
--- если энергия спектральных элементов разрешения текущего квантованного спектра, начиная с нуля вплоть до частотного элемента k-1 разрешения, больше или равна энергии спектральных элементов разрешения предыдущего квантованного спектра, начиная с нуля вплоть до частотного элемента k-1 разрешения.
В противном случае, коэффициент повторного масштабирования равен квадратному корню соотношения:
be
--- энергии спектральных элементов разрешения текущего квантованного спектра, начиная с нуля вплоть до частотного элемента k-1 разрешения, умноженной на квадрат коэффициента усиления текущего кадра;
- к
be
--- энергии спектральных элементов разрешения предыдущего квантованного спектра, начиная с нуля вплоть до частотного элемента k-1 разрешения, умноженной на квадрат коэффициента усиления предыдущего кадра.
При умножении обоих коэффициентов в этом случае, коэффициенты усиления взаимно уничтожают друг друга. Таким образом, коэффициент повторного масштабирования затем равен квадратному корню соотношения:
be
--- энергии спектральных элементов разрешения текущего квантованного спектра, начиная с нуля вплоть до частотного элемента k-1 разрешения;
- к
be
--- энергии спектральных элементов разрешения предыдущего квантованного спектра, начиная с нуля вплоть до частотного элемента k-1 разрешения.
После этого, скрытый квантованный спектр, например, может обрабатываться в качестве безошибочного квантованного спектра. Это означает то, что последующие операции декодера, такие как заполнение шумом, формирование шума или любые другие операции, параметры которых сохраняются в безошибочных рабочих данных потока битов, например, могут применяться впоследствии. Таким образом, возможные артефакты при маскировке уменьшаются.
be
После этого, аналогичный процесс постепенного нарастания/затухания, как описано выше, например, может применяться к спектру, начиная с частотного элемента k разрешения вплоть до начала спектра, например, возможно доступный тональный характер, например, может постепенно нарастать/затухать к шуму; и/или, например, возможно ярковыраженная спектральная форма, например, может сглаживаться; и/или энергия, например, может снижаться.
Ниже по тексту подробно описаны варианты осуществления.
Фиг. 2 иллюстрирует модуль 110 декодирования согласно конкретным вариантам осуществления.
Модуль 110 декодирования по фиг. 2 содержит модуль 330 хранения декодированных спектров и, при необходимости, модуль 310 хранения квантованных спектров, модуль 320 повторения и повторного масштабирования частичных кадров и модуль 340 постепенного затухания и скремблирования знаков. Конкретные подробности этих (суб)модулей конкретного модуля 110 декодирования по фиг. 2 описаны с обращением к фиг. 3-5.
Фиг. 3-5 обеспечивают высокоуровневое общее представление декодера LC3 (в качестве примера, используемого в качестве кодера с преобразованием из уровня техники, который модифицирован способами согласно изобретению) согласно вариантам осуществления. В частности, фиг. 3-5 обеспечивают различные виды конкретных вариантов осуществления для модуля 110 декодирования.
В варианте осуществления, модуль 110 декодирования, например, может содержать модуль 310 хранения квантованных спектров, выполненный с возможностью сохранения квантованного спектра аудиосигнала, при этом модуль 310 хранения квантованных спектров выполнен с возможностью обеспечения последнего квантованного спектра маскировки неполных потерь кадров. Кроме того, модуль 110 декодирования, например, может содержать модуль 330 хранения декодированных спектров, выполненный с возможностью сохранения декодированного спектра аудиосигнала, при этом модуль 330 хранения декодированных спектров выполнен с возможностью обеспечения последнего декодированного спектра маскировки неполных потерь кадров.
Фиг. 3 иллюстрирует общее представление модуля 110 декодирования согласно варианту осуществления для чистого канального декодирования. В частности, фиг. 3 показывает нормальную работу декодера. Блоки обработки, требуемые для маскировки полных потерь кадров, а также для маскировки частичных потерь кадров, представляют собой блоки 310 и 330 обработки.
Модуль 310 хранения квантованных спектров, например, может быть выполнен с возможностью хранения квантованного спектра. Модуль 310 хранения квантованных спектров сохраняет последний квантованный спектр, не относящийся к FFLC, чтобы обеспечивать возможность его многократного использования в случае маскировки частичных потерь кадров.
Модуль 330 хранения декодированных спектров выполнен с возможностью хранения спектра (например, называемого «декодированным спектром»). Этот блок обработки сохраняет последний спектр, не относящийся к FFLC, чтобы обеспечивать возможность его многократного использования в случае маскировки полных потерь кадров. Он, например, также может использоваться для повторного масштабирования во время маскировки частичных потерь кадров.
В варианте осуществления, модуль 110 декодирования, например, может содержать модуль 330 хранения декодированных спектров, выполненный с возможностью сохранения декодированного спектра аудиосигнала, при этом модуль 330 хранения декодированных спектров выполнен с возможностью обеспечения последнего декодированного спектра маскировки неполных потерь кадров. Кроме того, модуль 110 декодирования, например, может содержать модуль 340 постепенного затухания и скремблирования знаков, выполненный с возможностью постепенного затухания и скремблирования знаков в спектральных линиях спектра.
Помимо этого, согласно варианту осуществления, модуль 110 декодирования, например, может содержать модуль 310 хранения квантованных спектров, выполненный с возможностью сохранения квантованного спектра аудиосигнала, при этом модуль 310 хранения квантованных спектров выполнен с возможностью обеспечения последнего квантованного спектра маскировки неполных потерь кадров. Кроме того, модуль 110 декодирования, например, может быть содержат модуль 320 повторения и повторного масштабирования частичных кадров, выполненный с возможностью повторения и повторного масштабирования частичных кадров, при этом модуль 320 повторения и повторного масштабирования частичных кадров выполнен с возможностью дополнения спектра посредством добавления спектральных линий, которые не могут декодироваться посредством модуля 110 декодирования, при этом модуль 320 повторения и повторного масштабирования частичных кадров выполнен с возможностью повторного масштабирования упомянутых спектральных линий.
Фиг. 4 иллюстрирует общее представление модуля 110 декодирования согласно варианту осуществления для маскировки полных потерь кадров. В частности, фиг. 4 иллюстрирует вариант осуществления, выполненный с возможностью выполнения маскировки полных потерь кадров. Блоки обработки, требуемые для маскировки полных потерь кадров, представляют собой блоки 330 и 340 обработки. Блоки 330 и 340 обработки, например, могут иметь следующие задачи.
Модуль 330 хранения декодированных спектров, например, может быть выполнен с возможностью хранения спектра (также называемого, например, «декодированным спектром»). Этот блок 330 обработки обеспечивает последний спектр, не относящийся к FFLC.
Модуль 340 постепенного затухания и скремблирования знаков, например, может быть выполнен с возможностью постепенного затухания и скремблирования знаков. Этот блок обработки выполнен с возможностью создания спектра посредством обработки спектральных линий последнего кадра, не относящегося к FFLC, как описано ниже.
Фиг. 5 иллюстрирует общее представление модуля 110 декодирования согласно варианту осуществления для маскировки частичных потерь кадров.
В частности, фиг. 5 показывает применение маскировки частичных потерь кадров. Блоки обработки, требуемые для маскировки частичных потерь кадров, представляют собой блоки 310, 320, 330 и 340 обработки. Эти блоки 310, 320, 330 и 340 обработки имеют следующие задачи.
Модуль 310 хранения квантованных спектров, например, может быть выполнен с возможностью хранения квантованного спектра. Модуль 310 хранения квантованных спектров, например, может быть выполнен с возможностью обеспечения последнего квантованного спектра, не относящегося к FFLC.
Модуль 320 повторения и повторного масштабирования частичных кадров, например, может быть выполнен с возможностью повторения и повторного масштабирования частичных кадров. Этот блок обработки, например, может быть выполнен с возможностью дополнения спектра посредством добавления тех спектральных линий, которые не могут декодироваться. Впоследствии, эти спектральные линии, например, могут повторно масштабироваться, и значения ниже определенного порогового значения квантуются до нуля, как пояснено ниже.
Модуль 330 хранения декодированных спектров, например, может быть выполнен с возможностью хранения спектра (также называемого, например, «декодированным спектром»). Модуль 330 хранения декодированных спектров, например, может быть выполнен с возможностью обеспечения последнего спектра, не относящегося к FFLC, который, например, может использоваться для вычисления коэффициента повторного масштабирования.
Модуль 340 постепенного затухания и скремблирования знаков, например, может быть выполнен с возможностью постепенного затухания и скремблирования знаков. Модуль 340 постепенного затухания и скремблирования знаков, например, может быть выполнен с возможностью обработки спектральных линий, которые ранее обеспечены посредством маскировки частичных потерь кадров. Он поясняется ниже.
Ниже по тексту подробнее описана маскировка ошибок в зависимости от тональности согласно некоторым вариантам осуществления.
Сначала приведена функция постепенного нарастания/затухания согласно некоторым вариантам осуществления.
Для процессов постепенного нарастания/затухания, реализованных для скремблирования знаков и нелинейного затухания, как описано ниже, например, может использоваться функция в зависимости от числа (nbLostFramesInRow) последующих потерянных кадров, которая равна единице (1) вплоть до определенного значения (plc_start_inFrames), которая равна нулю (0) от определенного значения (plc_end_inFrames); и которая снижается линейно между единицей и нулем (1>x>0) между plc_start_inFrames и plc_end_inFrames.
Конкретный вариант осуществления, например, может реализовываться следующим образом:
plc_duration_inFrames=plc_end_inFrames plc_start_inFrames;
x=max(plc_start_inFrames, (min (nbLostFramesInRow, plc_end_inFrames)));
m=-1/plc_duration_inFrames;
b=plc_end_inFrames;
linFuncStartStop=m*(x+b);
где:
plc_start_inFrames - число последующих потерянных кадров, вплоть до которого значение linFuncStartStop равно 1
plc_end_inFrames - число последующих потерянных кадров, с которого значение linFuncStartStop равно 0
linFuncStartStop - значение функции постепенного нарастания/затухания
Начальное значение и конечное значение могут выбираться по-разному в зависимости от характеристики сигналов (например, вокализованные по сравнению с невокализованными) и в зависимости от маскировки потерь кадров (например, PFLC по сравнению с FFLC) (PFLC = маскировка частичных потерь кадров; FFLC = маскировка полных потерь кадров).
Фиг. 6 иллюстрирует функцию постепенного нарастания/затухания согласно варианту осуществления, которая зависит от числа потерянных кадров в строке (числа последующих потерянных кадров).
В частности, на фиг. 6 приведён пример этой функции постепенного нарастания/затухания, которая выполнена с возможностью линейного снижения от 20 мс до 60 мс.
Ниже по тексту подробнее описано манипулирование знаками согласно некоторым вариантам осуществления.
В качестве необходимой предпосылки, пороговое значение для скремблирования знаков, например, может определяться на основе значения (linFuncStartStop) постепенного нарастания/затухания, извлеченного выше.
randThreshold=-32768*linFuncStartStop;
Фиг. 7 иллюстрирует пороговое значение для скремблирования знаков согласно варианту осуществления, которое зависит от числа потерянных кадров в строке (числа последующих потерянных кадров) и которое дополнительно зависит от длины кадра.
В частности, на фиг. 7 приведён пример для порогового значения, которое зависит от числа последовательно потерянных кадров с использованием функции постепенного нарастания/затухания, при этом пороговое значение в 0 соответствует 50 изменению на противоположный знак, тогда как пороговое значение в -32768 соответствует 0% изменению на противоположный знак.
Вариант осуществления, например, может реализовываться посредством следующего псевдокода:
be
F
for k=k...N-1
seed=16831+seed*12821;
seed=seed-round(seed*2^-16)*2^16;
if seed==32768
seed=-32768;
end
if (seed<0 andand pitch_present==0) || seed<randThreshold
spec(k)=-spec_prev(k);
else
spec(k)=spec_prev(k);
end
end
где:
- k - спектральный элемент разрешения,
be
- k - первый спектральный элемент разрешения, который не может восстанавливаться,
F
- N - число спектральных линий,
- seed - случайное значение с примерным начальным значением в 24607,
- pitch_present - информация в отношении того, является ли сигнал в текущем кадре тональным,
- spec_prev(k) - спектральное значение элемента k разрешения в последнем хорошем кадре (также называется ""),
- spec(k) - спектральное значение элемента k разрешения в текущем кадре.
В этом примере, порождающее число (т.е. случайное значение) варьируется между 32768 и -32768. Для невокализованных сигналов (pitch_present==0), пороговое значение для инверсии знака равно нулю, что приводит к 50%-й вероятности. Для вокализованных сигналов, применяется переменное пороговое значение (randThreshold), которое составляет между -32768 (0%-ной вероятностью инверсии знака) и нулем (50%-ной вероятностью инверсии знака).
Ниже по тексту подробнее описано манипулирование амплитудой согласно некоторым вариантам осуществления.
В конкретном варианте осуществления, два коэффициента затухания, например, могут задаваться в зависимости от показателя стабильности, например, следующим образом:
slow=0,8+0,2*stabFac;
fast=0,3+0,2*stabFac;
- при этом stabFac указывает значение стабильности между последним и предпоследним кадром в случае FFLC либо текущим и последним кадром в случае PFLC.
Коэффициент стабильности, например, может представлять подобие между двумя сигналами, например, между текущим сигналом и предшествующим сигналом. Например, коэффициент стабильности, например, может ограничиваться посредством [0:1]. Коэффициент стабильности, близкий к 1 или равный 1, например, может означать то, что оба сигнала являются почти идентичными, и коэффициент стабильности, близкий к 0 или равный 0, например, может означать то, что оба сигнала являются существенно отличающимися. Подобие, например, может вычисляться для спектральных огибающих двух аудиосигналов.
Коэффициент θ стабильности, например, может вычисляться следующим образом:
,
- при этом:
curr
- scfQ указывает вектор коэффициентов масштабирования текущего кадра, и
prev
- scfQ указывает вектор коэффициентов масштабирования предыдущего кадра,
- N указывает число коэффициентов масштабирования в векторах коэффициентов масштабирования,
- θ указывает коэффициент стабильности, который ограничивается посредством ,
- k указывает индекс для вектора коэффициентов масштабирования.
В некоторых вариантах осуществления, stabFac, например, может использоваться по-разному для FFLC и для PFLC; т.е. он может задаваться равным значению между 0 и 1 в зависимости от стабильности для FFLC, тогда как он может задаваться равным 1 для PFLC.
Затем, соответствующие кумулятивные коэффициенты затухания (cum_fading_slow и cum_fading_fast, инициализированные с 1 в начале каждых потерь пакетов), например, могут извлекаться, которые, например, могут изменяться между кадрами, например, следующим образом:
cum_fading_slow=cum_fading_slow*slow;
cum_fading_fast=cum_fading_fast*fast;
- при этом: cum_fading_slow указывает медленный кумулятивный коэффициент демпфирования; и при этом cum_fading_fast указывает быстрый кумулятивный коэффициент демпфирования.
В варианте осуществления, накопление, например, может выполняться только для FFLC, но не для PFLC.
Кроме того, согласно варианту осуществления, значения для первого порогового значения (ad_ThreshFac_start) и последнего порогового значения (ad_ThreshFac_end), например, могут задаваться. В некоторых вариантах осуществления, эти значения, например, могут выбираться эвристически. Обычно, оба значения, например, могут быть больше единицы (1), и первое пороговое значение превышает последнее пороговое значение. На основе этих двух пороговых пределов, пороговое значение (ad_threshFac) для текущего кадра, например, может определяться на основе значения (linFuncStartStop) постепенного нарастания/затухания, извлеченного выше:
ad_ThreshFac_start=10;
ad_ThreshFac_end=1,2;
ad_threshFac=(ad_ThreshFac_start ad_ThreshFac_end) * linFuncStartStop+ad_ThreshFac_end;
- при этом ad_ThreshFac_start указывает первый коэффициент для средней энергии, выше которой применяется более сильное затухание; и при этом ad_ThreshFac_stop указывает последний коэффициент для средней энергии, выше которой применяется более сильное затухание.
Регулирование пороговых значений может выполняться только для FFLC, но не для PFLC. В этом случае, пороговое значение должно быть фиксированным для последующих кадров.
Фиг. 8 иллюстрирует пороговый коэффициент энергии согласно варианту осуществления, который зависит от числа потерянных кадров в строке и который дополнительно зависит от длины кадра.
В частности, на фиг. 8 приведён пример для порогового коэффициента в зависимости от числа последовательно потерянных кадров с использованием функции постепенного нарастания/затухания, при этом пороговый коэффициент снижается с 10 до 1,2 от 20 мс до 60 мс.
В конкретном варианте осуществления, адаптивное постепенное нарастание/затухание работает для степени детализации элемента разрешения. Оно может реализовываться следующим образом:
frame_energy=mean(spec(...).^2);
energThreshold=ad_threshFac*frame_energy;
be
F
for k=k...N-1
if (spec(k)^2)<energThreshold
m=cum_fading_slow;
n=0;
else
m=cum_fading_fast;
n=(cum_fading_slow-cum_fading_fast)
*sqrt(energThreshold)
*sign(spec_prev(k));
end
spec(k)=m*spec_prev(k)+n;
end
где:
- k - спектральный элемент разрешения,
be
- k - первый спектральный элемент разрешения, который не может восстанавливаться,
F
- N - число спектральных линий,
- spec_prev(k) - спектральное значение элемента k разрешения в последнем хорошем кадре (ниже называется ""),
- spec(k) - спектральное значение элемента k разрешения в текущем кадре.
Извлечение n в тракте else позволяет удостоверяться в том, что кривая затухания сохраняет большие значения большими, а меньшие значения меньшими.
Фиг. 9 иллюстрирует пример, в котором кумулятивное демпфирование применяется. Возможные входные значения в примере составляют между 0 и 1000; n=0 означает принимаемый кадр и обеспечивает некоторый ориентир. В примере, начальный коэффициент медленного затухания задается равным 0,9, и начальный коэффициент быстрого затухания задается равным 0,4 (stabFac=0,5). Во втором кадре, квадраты этих значений используются и т.д., что делает последующие кривые более плоскими. Одновременно, пороговое значение, например, может уменьшаться, что перемещает скручивание последовательных кривых дальше влево.
В другом конкретном варианте осуществления, адаптивное постепенное нарастание/затухание работает для каждой полосы частот. В этом примере, энергии для каждой полосы частот извлекаются, и адаптивное демпфирование применяется только к элементам разрешения в полосах частот, которые составляют выше среднего значения по всем полосам частот. В этих случаях, энергия этой полосы частот, например, может использоваться в качестве порогового значения для адаптивного демпфирования для каждого элемента разрешения. Примерная реализация, например, может реализовываться следующим образом:
F
be
bin_energy_per_band=zeros(ceil((N-k)/8),1);
idx=1;
be
F
for k=k:8:(N-7)
bin_energy_per_band(idx)=mean(spec(k:k+7).^2);
idx=idx+1;
end
energThreshold=ad_threshFac*mean(bin_energy_per_band);
idx=1;
be
F
for k=k:8:(N-7)
if bin_energy_per_band(idx)<energThreshold
m=cum_fading_slow;
spec(k:k+7)=m*spec_prev(k:k+7);
else
for j=k:k+7
if (spec(j)^2)<bin_energy_per_band(idx)
m=cum_fading_slow;
n=0;
else
m=cum_fading_fast;
n=(cum_fading_slow-cum_fading_fast)*sqrt(energThreshold)*sign(spec_prev(j));
end
spec(j)=m*spec_prev(j)+n;
end
end
idx=idx+1;
end
- при этом:
- k, j - спектральный элемент разрешения,
be
- k - первый спектральный элемент разрешения, который не может восстанавливаться,
F
- N - число спектральных линий,
- spec_prev(k) - спектральное значение элемента k разрешения в последнем хорошем кадре (ниже называется ""),
- spec(k) - спектральное значение элемента k разрешения в текущем кадре,
- idx - индекс полосы частот,
- bin_energy_per_band - энергия элемента разрешения в расчете на полосу частот.
Хранение спектральных линий в течение принимаемого кадра, а также вставка спектральных линий в течение (частично или полностью) потерянного кадра, в общем, может выполняться в любом месте между декодированием спектра на основе информации, имеющейся в потоке битов, и преобразованием обратно во временную область. Что касается LC3, оно, в частности, может выполняться, например, до или после SNS-декодирования (SNS=формирование спектрального шума), например, до или после TNS-декодирования (TNS=формирование временного шума), например, до или после применения глобального усиления и/или, например, до или после заполнения шумом.
Выбор предпочтительного местоположения также может варьироваться в зависимости от доступности дополнительной информации для частично или полностью потерянного кадра. Он, например, может выполняться в начале обработки сигналов в случае частично потерянного кадра (маскировка частичных потерь кадров); поскольку в этом случае параметры для последующих этапов обработки сигналов доступны. Он, например, может выполняться на последующей стадии в случае полностью потерянного кадра (маскировка полных потерь кадров), поскольку в этом случае параметры последующих этапов обработки сигналов не доступны. Тем не менее, например, он может по-прежнему выполняться до SNS-декодирования, поскольку этот этап обеспечивает возможность выделенного формирования спектра.
Ниже по тексту подробнее описана маскировка частичных потерь кадров согласно некоторым вариантам осуществления.
Конкретная реализация для маскировки частичных потерь кадров, например, может сначала применять коэффициент повторного масштабирования, а затем, например, может квантовать спектральные элементы разрешения ниже определенного порогового значения, чтобы обнулять. Это показывается в нижеприведенном примерном псевдокоде:
be
F
for k=k...N-1
= ;
if |  |<threshold
=0;
- при этом:
- k - спектральный элемент разрешения,
F
- N - число спектральных линий,
be
- k - первый спектральный элемент разрешения, который не может восстанавливаться,
-  - квантованная спектральная линия k текущего кадра,
-  - квантованная спектральная линия k последнего кадра, не относящегося к FFLC,
- fac - коэффициент повторного масштабирования,
- threshold - пороговое значение с примерным значением в 0,625, которое следует квантовать до нуля.
gg
Коэффициент fac повторного масштабирования в зависимости от глобальных усилений извлекается в качестве соотношения между текущим и предыдущим глобальным усилением:
ener
Коэффициент fac повторного масштабирования в зависимости от энергий инициализируется с 1. Если удовлетворяются следующие условия:
1.
2. ,
этот коэффициент повторного масштабирования задается равным корню соотношения между текущим и предыдущим квантованным спектром, умноженному на квадрат соответствующих глобальных усилений:
Общий коэффициент повторного масштабирования извлекается в следующим образом:
Когда , это приводит (значения глобального усиления взаимно уничтожают друг друга) к следующему:
Переменные в вышеприведенных уравнениях имеют следующий смысл:
- k - спектральный элемент разрешения,
be
- k - первый спектральный элемент разрешения, который не может восстанавливаться,
F
- N - число спектральных линий,
-  - квантованный спектр последнего кадра, не относящегося к FFLC,
-  - квантованный спектр текущего кадра,
-  - декодированный спектр последнего кадра, не относящегося к FFLC,
- gg - глобальное усиление текущего кадра (если квантованный спектр, кодированный в потоке битов, повторно масштабируется с глобальным усилением),
prev
- gg - глобальное усиление последнего кадра, не относящегося к FFLC (если квантованный спектр, кодированный в потоке битов, повторно масштабируется с глобальным усилением).
Нижеприведенный примерный псевдокод показывает определение коэффициента повторного масштабирования согласно примерной реализации:
prev
fac= gg/gg;
mean_nrg_high=mean( ( : ).^2);
mean_nrg_low=mean( (0:  -1).^2);
if (mean_nrg_low>mean_nrg_high)
ener_prev=sum((0:-1).^2);
ener_curr=sum((0:-1).^2);
prev
if ener_prev*gg^2>ener_curr*gg^2
fac=sqrt (ener_curr/ener_prev);
- при этом:
- fac - коэффициент повторного масштабирования,
- gg - глобальное усиление текущего кадра (если квантованный спектр, кодированный в потоке битов, повторно масштабируется с глобальным усилением),
prev
- gg - глобальное усиление последнего кадра, не относящегося к FFLC (если квантованный спектр, кодированный в потоке битов, повторно масштабируется с глобальным усилением),
be
- k - первый спектральный элемент разрешения, который не может восстанавливаться,
F
- N - число спектральных линий,
-  - декодированный спектр последнего кадра, не относящегося к FFLC,
-  - квантованный спектр последнего кадра, не относящегося к FFLC,
-  - квантованный спектр текущего кадра,
- sqrt - функция вычисления квадратного корня.
При том что некоторые аспекты описаны в контексте устройства, очевидно, что эти аспекты также представляют описание соответствующего способа, при этом блок или устройство соответствует этапу способа либо признаку этапа способа. Аналогичным образом, аспекты, описанные в контексте этапов способа, также представляют описание соответствующего блока или элемента, или признака соответствующего устройства. Некоторые или все этапы способа могут выполняться посредством (или с использованием) аппаратного устройства, такого как, например, микропроцессор, программируемый компьютер либо электронная схема. В некоторых вариантах осуществления, один или более из самых важных этапов способа могут выполняться посредством этого устройства.
В зависимости от определенных требований к реализации, варианты осуществления изобретения могут реализовываться в аппаратном обеспечении либо в программном обеспечении, либо по меньшей мере частично в аппаратном обеспечении, либо по меньшей мере частично в программном обеспечении. Реализация может выполняться с использованием цифрового носителя хранения данных, например, гибкого диска, DVD, Blu-Ray, CD, ROM, PROM, EPROM, EEPROM или флэш-памяти, имеющего сохраненные электронно считываемые управляющие сигналы, которые взаимодействуют (или допускают взаимодействие) с программируемой компьютерной системой таким образом, что осуществляется соответствующий способ. Следовательно, цифровой носитель хранения данных может быть машиночитаемым.
Некоторые варианты осуществления согласно изобретению содержат носитель данных, имеющий считываемые электронным способом управляющие сигналы, которые допускают взаимодействие с программируемой компьютерной системой таким образом, что осуществляется один из способов, описанных в данном документе.
В общем, варианты осуществления настоящего изобретения могут быть реализованы в виде компьютерного программного продукта с программным кодом, при этом программный код выполнен с возможностью осуществления одного из способов, когда компьютерный программный продукт работает на компьютере. Программный код, например, может сохраняться на машиночитаемом носителе.
Другие варианты осуществления содержат компьютерную программу для осуществления одного из способов, описанных в данном документе, сохраненную на машиночитаемом носителе.
Другими словами, вариант осуществления изобретаемого способа в силу этого представляет собой компьютерную программу, имеющую программный код для осуществления одного из способов, описанных в данном документе, когда компьютерная программа работает на компьютере.
Следовательно, дополнительный вариант осуществления изобретаемых способов представляет собой носитель хранения данных (цифровой носитель хранения данных или машиночитаемый носитель), содержащий записанную компьютерную программу для осуществления одного из способов, описанных в данном документе. Носитель данных, цифровой носитель хранения данных или носитель с записанными данными типично является физическим и/или постоянным.
Следовательно, дополнительный вариант осуществления изобретаемого способа представляет собой поток данных или последовательность сигналов, представляющих компьютерную программу для осуществления одного из способов, описанных в данном документе. Поток данных или последовательность сигналов, например, может быть выполнена с возможностью передачи через соединение для передачи данных, например, через Интернет.
Дополнительный вариант осуществления содержит средство обработки, например, компьютер или программируемое логическое устройство, выполненное с возможностью осуществления одного из способов, описанных в данном документе.
Дополнительный вариант осуществления содержит компьютер, имеющий установленную компьютерную программу для осуществления одного из способов, описанных в данном документе.
Дополнительный вариант осуществления согласно изобретению содержит оборудование или систему, выполненную с возможностью передачи (например, электронным или оптическим способом) компьютерной программы для осуществления одного из способов, описанных в данном документе, в приемное устройство. Приемное устройство, например, может представлять собой компьютер, мобильное устройство, запоминающее устройство и т.п. Оборудование или система, например, может содержать файловый сервер для передачи компьютерной программы в приемное устройство.
В некоторых вариантах осуществления, для выполнения части или всех из функциональностей способов, описанных в данном документе, может использоваться программируемое логическое устройство (например, программируемая пользователем вентильная матрица). В некоторых вариантах осуществления, программируемая пользователем вентильная матрица может взаимодействовать с микропроцессором для осуществления одного из способов, описанных в данном документе. В общем, способы предпочтительно осуществляются посредством любого аппаратного устройства.
Устройство, описанное в данном документе, может быть реализовано с использованием аппаратного устройства либо с использованием компьютера, либо с использованием сочетания аппаратного устройства и компьютера.
Способы, описанные в данном документе, могут осуществляться с использованием аппаратного устройства либо с использованием компьютера, либо с использованием сочетания аппаратного устройства и компьютера.
Вышеописанные варианты осуществления являются лишь иллюстративными в отношении принципов настоящего изобретения. Следует понимать, что специалистам в данной области техники должны быть очевидны модификации и изменения конфигураций и подробностей, описанных в данном документе. Таким образом, подразумевается ограничение лишь объемом нижеприведенной формулы изобретения, а не конкретными подробностями, представленными в качестве описания и пояснения вариантов осуществления в данном документе.
Библиографический список
[1] P. Lauber и R. Sperschneider "Error Concealment for Compressed Digital Audio", in Audio Engineering Society, 2001 год.
[2] J. Lecomte и A. Tomasek "ERROR CONCEALMENT UNIT, AUDIO DECODER and RELATED METHOD AND COMPUTER PROGRAM FADING OUT A CONCEALED AUDIO FRAME OUT ACCORDING TO DIFFERENT DAMPING FACTORS FOR DIFFERENT FREQUENCY BANDS", WO 2017/153299 A2, опубликовано в 2017 году.
[3]  A. Kurittu и H. Toukomaa "EVS Channel Aware Mode Robustness to Frame Erasures", in Interspeech 2016, San Francisco, CA, USA, 2016 год.
[4] A. Venkatraman, D. J. Sinder, S. Shaminda, R. Vivek, D. Duminda, C. Venkata, V. Imre, K. Venkatesh, S. Benjamin, L. Jeremie, Z. Xingtao и M. Lei "Improved Error Resilience for VoLTE and VoIP with 3GPP EVS Channel Aware Coding", на ICASSP 2015.
[5] M. Schnabel, G. Markovic, R. Sperschneider, C. Helmrich и J. Lecomte "Apparatus and method realizing the fading of the mdct spectrum to white noise prior to fdns application". Патент (Европа) EP 3 011 559 B1, опубликованный в 2017 году.