Речевой сигнал обычно представляется в цифровом формате, который представляет собой последовательность двоичных битов. Для приложений хранения и передачи желательно сжимать сигнал, представляя его как можно меньшим количеством битов, сохраняя при этом его качество восприятия. Квантование - это процесс представления сигнала с пониженным уровнем точности. Если уменьшить количество битов, выделенных для квантования речевого сигнала, сигнал искажается и качество речи ухудшается.
При узкополосном цифровом сжатии речи речевые сигналы дискретизируются со скоростью 8000 выборок в секунду. Каждая выборка обычно представлена 8 битами. Это 8-битное представление соответствует скорости передачи 64 кбит/с. Дальнейшее сжатие возможно за счет качества. Большинство современных низкобитовых речевых кодеров основаны на принципе линейного предсказательного кодирования речи. В этом разделе показано, как использовать блоки скалярного кодера квантователя и скалярного декодера квантователя для реализации простого речевого кодера.
Напечатать ex_sq_example1 в командной строке MATLAB ®, чтобы открыть пример модели.

Эта модель предварительно подчеркивает входной речевой сигнал, применяя фильтр FIR. Затем вычисляет коэффициенты отражения каждого кадра с помощью алгоритма Левинсона-Дурбина. Модель использует эти коэффициенты отражения для создания фильтра анализа линейного прогнозирования (решетчатая структура). Затем модель вычисляет остаточный сигнал путем фильтрации каждого кадра предварительно подчеркнутых речевых выборок с использованием коэффициентов отражения. Остаточный сигнал, являющийся выходом каскада анализа, обычно имеет меньшую энергию, чем входной сигнал. Блоки на стадии синтеза модели фильтруют остаточный сигнал с использованием коэффициентов отражения и применяют всеполюсный фильтр снятия акцента. Фильтр снятия ударения является обратным фильтру предварительного ударения. Результатом является полное восстановление исходного сигнала.
Запустить эту модель.
Дважды щелкните блоки Исходный сигнал (Original Signal) и Обработанный сигнал (Processed Signal) и прослушайте как исходный сигнал, так и обработанный сигнал.
Между ними нет существенной разницы, потому что квантование не выполнялось.
Чтобы лучше аппроксимировать реальную систему анализа и синтеза речи, квантуйте остаточный сигнал и коэффициенты отражения перед их передачей.
В предыдущей теме «Анализ и синтез речи» вы узнали теорию, лежащую в основе модели примера LPC Analysis and Synthesis of Speech. В этом разделе в качестве переменных E и K определяются остаточный сигнал и коэффициенты отражения в рабочей области MATLAB соответственно. Позже для создания скалярных квантователей используются следующие значения:
Откройте пример модели, введя ex_sq_example2 в командной строке MATLAB.
Сохранить файл модели как ex_sq_example2 в рабочей папке.
Из библиотеки Simulink ® Sinks перетащите два блока в рабочее пространство в модель.
Подключите выходные данные блока Левинсона-Дурбина к одному из блоков К рабочей области.
Дважды щелкните этот блок «В рабочую область» и задайте для параметра «Имя переменной» значение K. Нажмите кнопку ОК.
Подключите выход блока Фильтр анализа с переменным во времени (Time-Variing Analysis Filter) к другому блоку В рабочую область (To Workspace).
Дважды щелкните этот блок «В рабочую область» и задайте для параметра «Имя переменной» значение E. Нажмите кнопку ОК.
Ваша модель теперь должна выглядеть аналогично этой фигуре.

Запустите свою модель.
Остаточный сигнал E и коэффициенты отражения K определяются в рабочем пространстве MATLAB.
В этом разделе добавляются скалярные кодеры и декодеры квантования для квантования остаточного сигнала E и коэффициентов отражения K:
Если модель, созданная в окне «Идентификация остаточного сигнала и коэффициентов отражения», не открыта на рабочем столе, можно открыть эквивалентную модель, введя ex_sq_example2 в командной строке MATLAB.
Запустите эту модель для определения переменных E и K в рабочей области MATLAB.
Из библиотеки квантователей перетащите блоки скалярного кодера квантователя и скалярного декодера квантователя в модель для каждого сигнала, который требуется квантовать. Квантовать остаточный сигнал E и коэффициенты отражения K
Сохранить модель как ex_sq_example3. Модель должна выглядеть так, как показано на следующем рисунке.

Запустите свою модель.
Дважды щелкните блоки Исходный сигнал (Original Signal) и Обработанный сигнал (Processed Signal) и прослушайте оба сигнала.
Опять же, между ними нет заметной разницы. Поэтому можно сделать вывод, что квантование остаточных коэффициентов и коэффициентов отражения не повлияло на способность системы точно воспроизводить входной сигнал.
Теперь вы квантовали остаточные коэффициенты и коэффициенты отражения. Скорость передачи битов системы квантования вычисляется как (биты на кадр) * (скорость передачи кадров ).
В этом примере скорость передачи битов равна [(80 остаточных выборок/кадр) * (7 бит/кадр) + (12 выборок коэффициента отражения/кадр) * (7 бит/кадр)] * (100 кадров/секунду), или 64,4 кбит/с. Это выше, чем у большинства современных речевых кодеров, которые обычно имеют скорость передачи от 8 до 24 кбит/с. Если уменьшить количество битов, выделенных для квантования коэффициентов отражения или остаточного сигнала, общая скорость передачи битов уменьшится. Однако качество речи также ухудшится .
Сведения о снижении скорости передачи битов без влияния на качество речи см. в разделе Векторные квантователи.
В предыдущем разделе вы квантовали остаточный сигнал и коэффициенты отражения. Скорость передачи данных в системе скалярного квантования составляла 64,4 кбит/с. Эта битовая скорость выше, чем у большинства современных речевых кодеров. Чтобы разместить большее количество пользователей в каждом канале, необходимо снизить эту скорость передачи, сохраняя при этом качество речевого сигнала. Для выполнения этой задачи можно использовать векторные квантователи, которые используют корреляции между каждой выборкой сигнала.
В этом разделе рассматривается изменение модели скалярного квантования таким образом, что для квантования коэффициентов отражения используется квантователь разделенных векторов.
Откройте ex_vq_example1 в командной строке MATLAB. Пример модели ex_vq_example1 добавляет новую подсистему векторного квантования LSF в ex_sq_example3 модель. Эта подсистема предварительно сконфигурирована для работы в качестве векторного квантователя. Эту подсистему можно использовать для кодирования и декодирования коэффициентов отражения с помощью метода расщепленного векторного квантования.
Удалите блоки, относящиеся к коэффициентам отражения, и к коэффициентам отражения.
Из библиотеки Simulink Sinks перетащите блок терминатора в модель.
В библиотеке DSP System Toolbox™ Estimation > Linear Prediction (Оценка системы DSP > Линейное прогнозирование) щелкните и перетащите блок преобразования LSF/LSP в LPC и два блока преобразования LPC в RC/из них в модель.
Подключите блоки, как показано на следующем рисунке. Нет необходимости подключать блоки терминатора к портам P LPC к блокам RC/от них. Эти порты исчезают после установки параметров блока.

Вы изменили модель, включив в нее подсистему, способную к векторному квантованию. В следующем разделе выполняется сброс параметров модели для квантования коэффициентов отражения с помощью метода векторного квантования с разделением.
В предыдущем разделе описывается настройка модели скалярного квантования для векторного квантования путем добавления подсистемы векторного квантования LSF. В этом разделе задаются параметры блока и квантуются коэффициенты отражения с помощью метода квантования разделенных векторов.
Если модель, созданная в окне «Построить модель векторного квантователя», не открыта на рабочем столе, можно открыть эквивалентную модель, введя ex_vq_example2 в командной строке MATLAB.
Дважды щелкните подсистему векторного квантования LSF, а затем дважды щелкните подсистему VQ разделения LSF.
Откроется подсистема, и вы увидите три блока кодера векторного квантователя, используемые для реализации метода расщепленного векторного квантования.

Эта подсистема делит каждый вектор из 10 линейных спектральных частот (LSF), которые представляют коэффициенты отражения, на три субвектора LSF. Каждый из этих субвекторов посылается в отдельный векторный квантователь. Этот способ называется расщепленным векторным квантованием.
Дважды щелкните VQ блока LSF: 1-й субвектор.
Откроется диалоговое окно Параметры блока: VQ (Block Parameters: VQ of LSF: 1st subvector).

Переменная CB_lsf1to3_10bit является кодовой книгой для субвектора, которая содержит первые три элемента вектора LSF. Это матрица 3 на 1024, где 3 - количество элементов в каждом кодовом слове, а 1024 - количество кодовых слов в кодовой книге. Поскольку 1024, для квантования этого первого субвектора требуется 10 бит. Аналогично, 10-битовый векторный квантователь применяется ко второму и третьему субвекторам, которые содержат элементы 4-6 и 7-10 вектора LSF соответственно. Поэтому для квантования всех трех субвекторов требуется 30 бит.
Примечание
Если для квантования коэффициентов отражения использовался метод векторного квантования, то для достижения той же степени точности, что и метод расщепленного векторного квантования, потребуется 230 или 1.0737e9 значений кодовой книги.
В файле модели дважды щелкните блок автокорреляции и задайте для параметра Максимальное неотрицательное отставание (меньше входной длины) значение 10. Нажмите кнопку ОК.
Этот параметр управляет количеством линейных полиномиальных коэффициентов (LPC), которые вводятся в метод квантования разделенных векторов.
Дважды щелкните по блоку LPC to/from RC, который подключен к входу подсистемы векторного квантования LSF. Снимите флажок Выходная мощность нормализованной ошибки прогнозирования. Нажмите кнопку ОК.
Дважды щелкните блок преобразования LSF/LSP в LPC и задайте для параметра Input значение LSF in range (0 to pi). Нажмите кнопку ОК.
Дважды щелкните по блоку LPC to/from RC, подключенному к выходу блока LSF/LSP to LPC Conversion. Задайте для параметра Type of conversion значение LPC to RCи снимите флажок Выходная мощность нормализованной ошибки прогнозирования. Нажмите кнопку ОК.
Запустите свою модель.

Дважды щелкните блоки Исходный сигнал (Original Signal) и Обработанный сигнал (Processed Signal), чтобы прослушать как исходный сигнал, так и обработанный сигнал.
Между ними нет заметной разницы. Квантование коэффициентов отражения с использованием способа расщепленного векторного квантования давало речь хорошего качества без большого искажения.
Для квантования коэффициентов отражения используется метод расщепленного векторного квантования. Векторные квантователи в подсистеме векторного квантования LSF используют 30 битов для квантования кадра, содержащего 80 коэффициентов отражения. Скорость передачи битов системы квантования вычисляется как (биты на кадр) * (скорость передачи кадров ).
В этом примере скорость передачи битов равна [(80 остаточных выборок/кадр) * (7 бит/кадр) + (30 бит/кадр)] * (100 кадров/секунду) или 59 кбит/с. Это меньше 64,4 кбит/с, битрейта системы скалярного квантования. Однако качество речевого сигнала не ухудшилось. Если требуется дополнительно уменьшить скорость передачи данных в системе, можно использовать метод векторного квантования для квантования остаточного сигнала.