LPC to LSF/LSP Conversion

Преобразуйте коэффициенты линейного предсказания в линейные спектральные пары или линейные спектральные частоты

Библиотека

Оценка/линейное предсказание

dsplp

  • LPC to LSF/LSP Conversion block

Описание

Блок LPC в LSF/LSP Conversion принимает вектор или матрицу линейных коэффициентов предсказания (LPC) и преобразует его в вектор или матрицу линии спектральных пар (LSP) или линейных спектральных частот (LSFs При преобразовании LPC в LSF, выходные параметры блоков совпадают с выходами poly2lsf функция.

Вход блока должен быть либо матрицей, либо вектором-столбцом, либо неориентированным вектором. Каждый канал входа должен иметь по крайней мере две выборки.

Вход LPCs для каждого канала, 1, a1, <reservedrangesplaceholder4> 2..., <reservedrangesplaceholder3> <reservedrangesplaceholder2>, должен быть знаменателем передаточной функции стабильного фильтра все-полюса с формой, данной в первом уравнении Требований для Действительных Выходов. Входной канал M длины + 1 приводит к выходному каналу с M длины.

Смотрите другие разделы этой страницы с описанием, чтобы узнать, как убедиться, что вы получаете допустимые выходы, как обнаружить недопустимые выходы, как блок вычисляет значения LSF/LSP и многое другое.

Требования к допустимым выходам

Чтобы получить действительные выходы, ваши входы и значение параметров Root finding coarse grid points должны соответствовать этим требованиям:

  • Входные LPC для каждого канала, 1, a1, a 2,..., a m, должны быть получены от знаменателя следующей передаточной функции, H(z), стабильного полнополюсного фильтра (все корни H(z) должны быть внутри единичного круга). Обратите внимание, что первый термин в знаменателе H(z) должен быть 1. Когда входные LPC не поступают от передаточной функции следующей формы, выходы блока являются недопустимыми.

    H(z)=11+a1z1+a2z2+ ... +amzm

  • Значение параметра Root finding coarse grid points должно быть достаточно большим, чтобы блок мог найти все значения LSP или LSF. (Выходные LSF и LSP являются корнями полиномов, связанных с входным полиномом LPC; блок ищет эти корни, чтобы получить выход. Для получения дополнительной информации смотрите LSF и LSP Метод расчета: Полином Чебышева метод для корневого нахождения.) Когда вы не устанавливаете Root finding coarse grid points на достаточно высокое значение относительно количества LPC, блок может не найти все LSP или LSF и получить недопустимые выходы, как описано в Root Searning Method Limitations: Failure to Find Roots.

Чтобы узнать о распознавании недопустимых входных и выходных параметров и параметров для борьбы с ними, смотрите Обработку и Распознавание недопустимых входных и выходных параметров.

Установка выходов для LSF или LSP

Установите параметр Output в одну из следующих настроек, чтобы определить, выводит ли блок LSF или LSP:

  • LSF in radians (0 pi) - Блок выводит значения LSF между 0 и π радианами в порядке увеличения. Блок не выводит гарантированные значения LSF, 0 и π.

  • LSF normalized in range (0 0.5) - Блок выходы нормированные значения LSF в порядке увеличения, вычисленные путем деления значений LSF между 0 и π радианами на 2 π. Блок не выводит гарантированные нормированные значения LSF, 0 и 0,5.

  • LSP in range (-1 1) - Блок выводит значения LSP в порядке уменьшения, равном косинусу значений LSF между 0 и π радианами. Блок не выводит гарантированные значения LSP, -1 и 1.

Настройка вывода Расчета времени и точности с помощью корневых Нахождений параметров

Значения n и k определяют время и точность расчета выхода блока, где

  • n - значение параметра Root finding coarse grid points (выбирайте это значение осторожно; см. примечание ниже).

  • k - значение параметра Root finding bisection refinement.

  • Уменьшение значений n и k уменьшает время расчета выхода, но также уменьшает точность выхода:

    • Верхняя граница времени расчета блока пропорциональна k(n1).

    • Каждый выход LSP находится внутри 1/(n2k) фактического значения LSP.

    • Каждый LSF- выхода находится в пределах и LSF от фактического значения LSF, LSF act, где

      ΔLSF=|acos(LSFact)acos(LSFact+1/(n2k))|

Примечание

Когда значение параметра Root finding coarse grid points слишком мало относительно количества LPC, блок может вывести недопустимые данные, как описано в Requirements for Valid Outputs. Также см. «Обработка и распознавание недопустимых входных параметров и выходов».

Заметные входные и выходные свойства

  • Чтобы получить действительные выходы, входные LPC и значение параметра Root finding coarse grid points должны соответствовать требованиям, описанным в Requirements for Valid Outputs.

  • Входной канал Length L + 1 приводит к выходному каналу length L

  • Output параметр определяет тип вывода (см. «Установка выходов в LSF или LSP»):

    • LSFs - частоты, <reservedrangesplaceholder8> <reservedrangesplaceholder7> , где 0 <<reservedrangesplaceholder6> <reservedrangesplaceholder5> <π и <reservedrangesplaceholder3> <reservedrangesplaceholder2> <<reservedrangesplaceholder1> <reservedrangesplaceholder0> + 1

    • Нормированные LSF - w k/2 π

    • LSP - cos (w k)

Обработка и распознавание недопустимых входов и выходов

Блок выходы недопустимые данные, когда ваши входы LPC и значение параметра Root finding coarse grid points не соответствуют требованиям, описанным в Requirements for Valid Выходов. Следующие темы описывают, как выглядят недопустимые выходы и как задать параметры блоков, предусмотренные для обработки недопустимых входных и выходных параметров:

Как выглядят недопустимые выходы

Каналы недопустимого выхода имеют те же размерности, размеры и статуи системы координат, что и каналы допустимого выхода. Однако недопустимые выходные каналы не содержат все значения LSP или LSF. Вместо этого они не содержат ни одного из значений LSP и LSF, а остальная часть выхода заполняется значениями держателя места (-1, 0,5 или π) в зависимости от Output настройки параметра).

Короче говоря, все недопустимые выходы в конце канала в одном из значений держателя места (-1, 0,5 или π), как показано в следующей таблице. Чтобы узнать, как использовать параметры блока для обработки недопустимых входов и выходов, смотрите следующий раздел.

Настройка выходного параметраДержатель местаВыборка недопустимых выходов

LSF in radians (0 pi)

π

[w1w2w3πππππ]

LSF normalized in range (0 0.5)

0.5

[w1w20.5]

LSP in range (-1 1)

-1

[cos(w13)cos(w23)111]

Параметры для обработки недопустимых входов и выходов

Необходимо задать, как блок обрабатывает недопустимые входные и выходные входы, установив эти параметры:

  • Show output validity status (1=valid, 0=invalid) - Установите этот параметр, чтобы активировать второй выходной порт, который выводит вектор с одним логическим элементом на канал; 1 когда выход соответствующего канала действителен, и 0 если выход недопустим. Выходные параметры LSF и LSP недопустимы, когда блок не может найти все значения LSF или LSP или когда входные LPC нестабильны (для получения дополнительной информации смотрите Требования к допустимым выходам). См. предыдущий раздел, чтобы узнать, как распознать недопустимые выходы.

  • If current output is invalid, overwrite with previous output - Установите этот флажок, чтобы блок перезаписал недопустимые выходы предыдущими выходами. Когда вы устанавливаете этот параметр, вам также нужно учитывать эти параметры:

    • When first output is invalid, overwrite with user-defined values - Когда первый вход нестабильен, можно перезаписать недопустимый первый вывод на

      • Значения по умолчанию, снимая этот флажок

      • Значения, которые вы задаете, путем установки этого флажка

      Начальными значениями перезаписи по умолчанию являются представления LSF или LSP полнопроходного фильтра. Вектор, который используется для перезаписи недопустимого выхода, сохранен как внутреннее состояние.

    • User-defined LSP/LSF values for overwriting invalid first output - Задайте вектор значений для перезаписи недопустимого первого выхода, если вы выбрали параметр When first output is invalid, overwrite with user-defined values. Для многоканальных входов предоставьте матрицу с таким же количеством каналов, как и вход, или один вектор, который будет применен к каждому каналу. Вектор или матрица заданных значений LSP/LSF должны иметь ту же размерность, размер и статус системы координат, что и другие выходы.

  • If first input value is not 1 - выход в любом канале, недопустим, когда первый коэффициент в векторе LPC не 1; этот параметр определяет, что делает блок, когда заданы такие входы:

    • Ignore - Продолжите расчеты, как если бы первый коэффициент был 1.

    • Normalize - Перед вычислением вывода разделите входные LPC на значение первого коэффициента.

    • Normalize and warn - В дополнение к Normalizeотобразить предупреждающее сообщение в MATLAB® командная строка.

    • Error - Остановите симуляцию и отобразите сообщение об ошибке в командной строке MATLAB.

Параметры

Output

Задает, преобразовать ли входные линейные полиномиальные коэффициенты предсказания (LPC) в LSP in range (-1 1), LSF in radians (0 pi), или LSF normalized in range (0 0.5). Описание трех настроек см. в разделе Установка выходов для LSF или LSP.

Root finding coarse grid points

Значение n, где блок делит интервал (-1, 1) на n подынтервалов равной длины и ищет корни (значения LSP) в каждом подынтервале. Необходимо выбрать n достаточно большого размера, или выход блока может оказаться недопустимым, как описано в разделе «Требования к допустимым выходам». Чтобы узнать, как блок использует этот параметр для вычисления выхода, смотрите LSF и LSP Computation Method: Полином Чебышева для корневого нахождения. Также см. «Настройка Выхода Расчета времени и точности с корневыми Нахождениями параметров». Настраиваемый (Simulink).

Root finding bisection refinement

Значение k, где каждый выход LSP находится в 1/(n2k) фактического значения LSP, где n - значение параметра Root finding coarse grid points. Чтобы узнать, как блок использует этот параметр для вычисления выхода, смотрите LSF и LSP Computation Method: Полином Чебышева для корневого нахождения. Также см. «Настройка Выхода Расчета времени и точности с корневыми Нахождениями параметров». Настраиваемый (Simulink).

Show output validity status

Установите этот параметр, чтобы активировать второй выходной порт, который выводит вектор с одним логическим элементом на канал; 1 когда выход соответствующего канала действителен, и 0 если выход недопустим. Выходные параметры LSF и LSP недопустимы, когда блок не может найти все значения LSF или LSP или когда входные LPC нестабильны (для получения дополнительной информации смотрите Требования к допустимым выходам).

If current output is invalid, overwrite with previous output

Установка этого флажка приводит к перезаписи блока недопустимых выходов предыдущими выходами. Установка этого параметра активирует другие параметры для ухода за начальными значениями перезаписи (когда самый первый выход блока является недопустимым). Для получения дополнительной информации смотрите Параметры для обработки недопустимых входных параметров и выходов.

When first output is invalid, overwrite with user-defined values

Когда первый вход нестабильен, можно перезаписать недопустимый первый вывод на

  • Значения по умолчанию, снимая этот флажок

  • Значения, которые вы задаете, путем установки этого флажка

Начальными значениями перезаписи по умолчанию являются представления LSF или LSP полнопроходного фильтра. Вектор, который используется для перезаписи недопустимого выхода, сохранен как внутреннее состояние. Для получения дополнительной информации смотрите Параметры для обработки недопустимых входных параметров и выходов.

User-defined LSP/LSF values for overwriting invalid first output

Укажите вектор значений для перезаписи недопустимого первого выхода, если вы выбрали параметр When first output is invalid, overwrite with user-defined values. Для многоканальных входов предоставьте матрицу с таким же количеством каналов, как и вход, или один вектор, который будет применен к каждому каналу. Вектор или матрица заданных значений LSP/LSF должны иметь ту же размерность, размер и статус системы координат, что и другие выходы.

If first input value is not 1

Определяет, что делает блок, когда первый коэффициент входного сигнала не 1. Блок может либо продолжить расчеты, как если первый коэффициент равен 1 (Ignore); разделите входные LPC на значение первого коэффициента перед вычислением выхода (Normalize); в дополнение к Normalizeотобразить предупреждающее сообщение в командной строке MATLAB (Normalize and warn); остановите симуляцию и отобразите сообщение об ошибке в командной строке MATLAB (Error). Для получения дополнительной информации смотрите Параметры для обработки недопустимых входных параметров и выходов.

Теория

Расчет LSF и LSP: Полином Чебышева для определения корня

Примечание

Чтобы узнать принципы, на которых основан метод расчета LSP и LSF блока, смотрите ссылку, перечисленную в ссылки.

Чтобы вычислить выходы LSP для каждого канала, блок опирается на то, что значения LSP являются корнями двух конкретных полиномов, связанных с входным полиномом LPC; блок находит эти корни с помощью Полинома Чебышева метода поиска корней, описанного далее. Чтобы вычислить выходы LSF, блок вычисляет дуговой косинус LSP, выводя значения в диапазоне от 0 до π радиан.

Метод корневого поиска

LSP, которые являются корнями двух конкретных полиномов, всегда находятся в области значений (-1, 1). (Гарантированные корни в 1 и -1 факторизированы.) Блок находит LSP, ища изменение знака двух значений полиномов между точками в области значений (-1, 1). Блок ищет максимум k (n - 1) точек, где

  • n - значение параметра Root finding coarse grid points.

  • k - значение параметра Root finding bisection refinement.

Метод блока для выбора точек для проверки состоит из следующих двух шагов:

  1. Coarse Root Finding - - Блок делит интервал [-1, 1] на n интервала, каждый из которых имеет длину 2/ n, и проверяет знаки значений обоих полиномов в конечных точках интервалов. Блок начинает проверять знаки в 1 и продолжает проверять знаки в 1-4/ n, 1-6/ n и так далее на шагах длины 2/ n, выводя любую точку, если она является корнем. Блок останавливает поиск в таких ситуациях:

    1. Блок находит изменение знака значений полинома между двумя смежными точками. Интервал, содержащий изменение знака, гарантированно содержит корень, поэтому блок дополнительно ищет интервал, как описано на шаге 2 «Уточнение корневого поиска».

    2. Блок находит и выходы все M корни (задается длина - M + 1 вход LPC).

    3. Блок не может найти все корни M и приводит к недопустимым выходам, как описано в разделах Обработка и Распознавание недопустимых входов и выходов.

  2. Root Finding Refinement - когда блок находит изменение знака в интервале, [a, b], он ищет корень, который гарантированно лежит в интервале, выполнив следующие шаги:

    1. Check if Midpoint Is a Root - блок проверяет знак середины интервала [a, b]. Блок выводит среднюю точку, если он является корнем, и продолжает Шаг 1, Грубое Корневое Нахождение, в следующей точке, a - 2/ n. В противном случае блок выбирает полуинтервал с конечными точками противоположного знака (или [a, (a + b )/2] или [(a + b )/2, b]) и выполняет Шаг 2b, Остановить или Продолжить Уточнение Корневого Поиска.

    2. Stop or Continue Root Finding Refinement - Когда блок повторяет Шаг 2a k раз (k является значением параметра Root finding bisection refinement), блок линейно интерполирует корень с помощью конечных точек полуинтервала, выводит результат как значение LSP и возвращается к Шагу 1, Грубое корневое нахождение. В противном случае блок повторяет Шаг 2а, используя полуинтервал.

Грубое определение корня и уточнение корня

Ограничения метода корневого нахождения: Отказ найти корни

Метод нахождения корня блока, описанный выше, может потерпеть неудачу, из-за чего блок выдает недопустимые выходы (для получения дополнительной информации о недопустимых выходах, см. «Обработка и распознавание недопустимых входных параметров и выходов»).

В частности, блок может не найти некоторые корни, если значение параметра Root finding coarse grid points, n, слишком мало. Если полиномы быстро колеблются и имеют корни, которые очень близки друг к другу, корневое нахождение может быть слишком грубым, чтобы идентифицировать корни, которые очень близки друг к другу, как показано на Исправлении Неудачного Корневого Нахождения.

Для входных полиномов LPC более высокого порядка, вы должны увеличить Root finding coarse grid points значение, чтобы убедиться, что блок находит все корни и производит допустимые выходы.

Исправление неудачного поиска корня

Поддерживаемые типы данных

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью

  • Логический - поддерживается только необязательным выходным портом, который появляется при установке параметра, Show output validity status (1=valid, 0=invalid)

Ссылки

Кабаль, П. и Рамачандран, Р. «Вычисление линейных спектральных частот с использованием многочленов Чебышёва». Транзакции IEEE по акустике, речи и обработке сигналов, том ASSP-34 № 6, декабрь 1986. с. 1419-1426.

См. также

LSF/LSP to LPC ConversionDSP System Toolbox
LPC to/from RCDSP System Toolbox
LPC/RC to AutocorrelationDSP System Toolbox
poly2lsfSignal Processing Toolbox

Расширенные возможности

.
Представлено до R2006a