Использование микроконтроллеров Microchip в задачах воспроизведения звука

№ 2’2004
PDF версия
Для решения задач записи, воспроизведения и передачи голоса чаще всего необходимо увеличение производительности основного процессора или использование процессоров обработки сигналов.

Команды сдвига данных

Для решения задач записи, воспроизведения и передачи голоса чаще всего необходимо увеличение производительности основного процессора или использование процессоров обработки сигналов. Это ведет к увеличению стоимости системы и ее размера. Но для получения системы обработки голоса со средним качеством и небольшой полосой пропускания можно использовать 8-разрядные микроконтроллеры.

Алгоритм ADPCM (Adaptive Difference Pulse Code Modulation, по-русски — АДИКМ, адаптивная дифференциальная импульсно-кодовая модуляция), как и любой другой алгоритм кодирования речи, предназначен для уменьшения скорости потока цифровых данных. Это позволяет увеличить пропускную способность линий связи с сохранением их функциональности и уменьшить трафик передачи. Применительно к записи и хранению звуковых данных использование АДИКМ позволяет увеличить количество записываемой информации на единицу носителя.

Из классической теории сигналов известно, что значения отсчетов, взятых через интервал Котельникова, взаимно некоррелированы, если спектр сигнала в занимаемой им полосе частот равномерен (белый шум). Однако на практике в основном используются сигналы, спектр которых неравномерен, поэтому корреляция между отсчетами не равна нулю. При этом степень корреляции возрастает с увеличением частоты дискретизации. Типичным примером таких сигналов является речь, где корреляция между соседними отсчетами достаточно велика при соблюдении теоремы Котельникова в процессе дискретизации.

На этом факте основан принцип передачи, называемый «кодирование с предсказанием». Последовательность коррелированных отсчетов исходного сигнала
b(k) подается на один из входов вычитающего устройства, а на другой его вход поступает сигнал предсказания
b'(k), сформированный из предыдущих отсчетов.

Полученный сигнал ошибки
e(k) предсказания поступает в линию передачи. На приемном конце имеется идентичный передающему предсказатель. Так как он оперирует с теми же предыдущими отсчетами, предсказанное им значение нового отсчета
b»'(k) будет таким же, как в передатчике. Добавив к нему принятое значение ошибки
e'(k), можно восстановить истинный отсчет
b»(k). При этом, чем сильнее корреляционные связи между отсчетами сигнала, тем точнее можно сформировать сигнал предсказания.

В цифровых системах передачи отсчеты сигнала ошибки подвергаются обычным операциям квантования и кодирования, результатом чего является импульсно-кодовое представление передаваемого сигнала. Такой метод называется дифференциальной импульсно-кодовой модуляцией (ДИКМ).

Применение ДИКМ позволяет значительно снизить скорость потока, однако ошибка при восстановлении сигнала зависит от величины шага квантования передаваемого кода. Уменьшение шага квантования (увеличение разрядности кодового слова) уменьшает ошибку и соответственно качество восстановленного сигнала, но увеличивает скорость потока.

Увеличение шага квантования уменьшает скорость потока, но увеличивает ошибку восстановления. В рамках классической ДИКМ с фиксированным шагом квантования это противоречие неразрешимо. Одно из решений заключается во введении адаптации шага квантования в процесс кодирования-декодирования. Такой алгоритм назван АДИКМ (адаптивная дифференциальная импульсно-кодовая модуляция). Впервые рекомендации по использованию АДИКМ были опубликованы в стандарте Международного консультативного комитета по телефонии и телеграфии (CCITT — The International Telegraph and Telephone Consultative Committee) ITU-T G.721. Однако оказалось, что при осуществлении адаптации шкалы квантования возникают значительные запаздывания, ухудшающие качество речи. В 1987 году во вкладе СССР в МККТТ был описан алгоритм АДИКМ G.721-bis с ускоренной адаптацией шага. В 1990 году была издана окончательная редакция стандарта — ITU-T G.726, в которой учтены все поправки. Алгоритм гарантирует оценки MOS на уровне 4.3 (при скорости потока 32 кбит/с), что часто принимается за эталон качества телефонной связи. Этот алгоритм до сих пор используется при передаче речи по спутниковым и другим каналам связи, несмотря на появление кодеков с гораздо более низкой скоростью потока и достаточным качеством восстановления.

Рис. 1

Реализация упрощенного алгоритма ADPCM на микроконтроллере

Стандарт ITU-T G.726 обладает некой избыточностью для данного применения. В частности, кодек G.726 имеет в своем составе преобразователь входной последовательности ИКМ, кодированной по A- или
m-закону в линейную ИКМ, детектор тона и перехода, предназначенный для определения состава предаваемых данных (речь или факсимильный обмен), и другие дополнительные блоки, улучшающие помехозащищенность сигнала при передачи по линии связи.

Рассмотрим структуру упрощенного кодера. Входной сигнал кодера s
i — последовательность линейно квантованных отсчетов речевого сигнала с разрядностью 16 бит, кодированных дополнительным кодом. Выходным сигналом кодера является последовательность адаптивно кодированных четырехразрядных отсчетов ошибки предсказания t, следующих с частотой дискретизации, равной входной.

Таким образом, кодер ADPCM позволяет сократить скорость потока в 4 раза при кодировании 16-разрядных входных данных и в 2 раза при кодировании 8-разрядных данных. Согласно рекомендациям ITU G.721, в речевых системах ADPCM в качестве входного сигнала используется 16-разрядный цифровой поток с частотой дискретизации 8 кГц. Скорость такого потока равна 16×8000 = 128 кбит/с. Скорость потока на выходе кодера составляет 4?8000 = 32 кбит/с.

Структурная схема процесса кодирования

Рис. 2. Структурная схема процесса кодирования

Адаптационная способность рассматриваемого кодера основана на информации об абсолютном значении предыдущего отсчета ошибки предсказания. Для простоты реализации системы применен табличный метод адаптации (табл. 1–2). Основное отличие рассматриваемого алгоритма от алгоритма ITU G.721 состоит в принципе предсказания. Адаптивный предсказатель кодера ITU G.721 рассчитывает значение предсказанного отсчета, используя в качестве опорных данных значения шести предыдущих ошибок квантования и двух предыдущих предсказанных значений. В данной системе предсказание осуществляется по одной предыдущей ошибке квантования и по одному предыдущему предсказанному отсчету. Синхронность работы кодера и декодера системы обеспечивается тем, что часть кодера представляет собой декодер, поэтому передавать по каналу данные об адаптации нет необходимости.

Таблица 1. Поисковая таблица индексов адаптации шага квантования (16 значений)
–1 –1 –1 –1 2 4 6 8
–1 –1 –1 –1 2 4 8 8
Таблица 2. Поисковая таблица шагов квантования (89 значений)
7 8 9 10 11 12 13 14
16 17 19 21 23 25 28 31
34 37 41 45 50 55 60 66
73 80 88 97 107 118 130 143
157 173 190 209 230 253 279 307
337 371 408 449 494 544 598 658
724 796 876 963 1060 1166 1282 1411
1552 1707 1878 2066 2272 2499 2749 3024
3327 3360 4026 4428 4871 5358 5894 6484
7132 7845 8630 9493 10442 11487 12635 13899
15289 16818 18500 20350 22385 24623 27086 29794
32767              

Сама процедура кодирования-декодирования занимает порядка 600 слов командной памяти и 13 байт памяти данных. Этому требованию по ресурсам удовлетворяют все микроконтроллеры Microchip.

Наиболее оптимальным является использование новых Flash-микроконтроллеров, имеющих в своем составе 10-битный АЦП. В семействе маловыводных контроллеров PIC12 (8-выводный корпус) это PIC12F675, имеющий программную память размером 1 Кслово, встроенную память EEPROM, 2 таймера (8-и 16-битный), компаратор. В том же семействе есть новейший PIC12F683, имеющий увеличенную до 2 Кслов память программ, аппаратный модуль ШИМ и, что немаловажно, режимы пониженного энергопотребления. В сочетании с низкой стоимостью появляется возможность встраивания голосовых функций практически в любые устройства.

Структурная схема процесса декодирования

Рис. 3. Структурная схема процесса декодирования

Другой вариант — использование более мощного микроконтроллера семейства PIC18, в котором помимо голосовых функций можно реализовать сложные функции управления и обработки данных.

Для обработки звуковых сигналов перспективным видится использование контроллеров семейства dsPIC30F с DSP-ядром. Они совмещают в себе возможности микроконтроллера с мощностью процессоров цифровой обработки сигналов. Имея в своем распоряжении большой объем памяти и специальные команды DSP-ядра, разработчик получает гибкий инструмент для обработки аналоговых сигналов. Мощности контроллера достаточно не только для воспроизведения звука, его фильтрации и синтеза, но и для распознавания речи и говорящего. Это позволяет строить компактные высокоинтеллектуальные охранные системы и комплексы, системы идентификации и голосового управления.

Голосовые кодеки, построенные на основе контроллеров, могут применяться как автономно, так и в составе системы. Для связи основного процессора с кодеком (микроконтроллером) могут применяться различные интерфейсы — последовательные (SPI, I2C, UART) и параллельные.

Для квантования сигнала используется встроенный АЦП контроллера. Полученное 10-битное значение кодируется в 4-битное и упаковывается в байты. Для вывода голосового сигнала применяется блок ШИМ вкупе с внешним ФНЧ. Качества цифроаналогового преобразования на основе ШИМ оказывается достаточно для голосовых приложений.

Примеры программ для контроллеров Microchip, готовые решения и полное описание алгоритмов доступны на сайте
www.microchip.com в разделе Application Notes (Application Note 643). Информацию о сторонних разработчиках ПО для обработки звука на основе алгоритмов АДИКМ можно найти в Интернет по адресу
http://www.circuitcellar.com/pastissues/articles/richey110/text.htm.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *