KiT#37(2).qxd
2/3/04
4:48 PM
Page 28
Êîìïîíåíòû
Êîìïîíåíòû è òåõíîëîãèè, ¹ 2’2004
Èñïîëüçîâàíèå ìèêðîêîíòðîëëåðîâ Microchip â çàäà÷àõ âîñïðîèçâåäåíèÿ çâóêà Äëÿ ðåøåíèÿ çàäà÷ çàïèñè, âîñïðîèçâåäåíèÿ è ïåðåäà÷è ãîëîñà ÷àùå âñåãî íåîáõîäèìî óâåëè÷åíèå ïðîèçâîäèòåëüíîñòè îñíîâíîãî ïðîöåññîðà èëè èñïîëüçîâàíèå ïðîöåññîðîâ îáðàáîòêè ñèãíàëîâ. Ýòî âåäåò ê óâåëè÷åíèþ ñòîèìîñòè ñèñòåìû è åå ðàçìåðà. Íî äëÿ ïîëó÷åíèÿ ñèñòåìû îáðàáîòêè ãîëîñà ñî ñðåäíèì êà÷åñòâîì è íåáîëüøîé ïîëîñîé ïðîïóñêàíèÿ ìîæíî èñïîëüçîâàòü 8−ðàçðÿäíûå ìèêðîêîíòðîëëåðû.
Àëåêñåé Ñàôðîíîâ
[email protected]
Îñíîâû ADPCM Алгоритм ADPCM (Adaptive Difference Pulse Code Modulation, по-русски — АДИКМ, адаптивная дифференциальная импульсно-кодовая модуляция), как и любой другой алгоритм кодирования речи, предназначен для уменьшения скорости потока цифровых данных. Это позволяет увеличить пропускную способность линий связи с сохранением их функциональности и уменьшить трафик передачи. Применительно к записи и хранению звуковых данных использование АДИКМ позволяет увеличить количество записываемой информации на единицу носителя. Из классической теории сигналов известно, что значения отсчетов, взятых через интервал Котельникова, взаимно некоррелированы, если спектр сигнала в занимаемой им полосе частот равномерен (белый шум). Однако на практике в основном используются сигналы, спектр которых неравномерен, поэтому корреляция между отсчетами не равна нулю. При этом степень корреляции возрастает с увеличением частоты дискретизации. Типичным примером таких сигналов является речь, где корреляция между соседними отсчетами достаточно велика при соблюдении теоремы Котельникова в процессе дискретизации. На этом факте основан принцип передачи, называемый «кодирование с предсказанием». Последовательность коррелированных отсчетов исходного сигнала b(k) подается на один из входов вычитающего устройства, а на другой его вход поступает сигнал предсказания b'(k), сформированный из предыдущих отсчетов.
Полученный сигнал ошибки e(k) предсказания поступает в линию передачи. На приемном конце имеется идентичный передающему предсказатель. Так как он оперирует с теми же предыдущими отсчетами, предсказанное им значение нового отсчета b'''(k) будет таким же, как в передатчике. Добавив к нему принятое значение ошибки e'(k), можно восстановить истинный отсчет b''(k). При этом, чем сильнее корреляционные связи между отсчетами сигнала, тем точнее можно сформировать сигнал предсказания. В цифровых системах передачи отсчеты сигнала ошибки подвергаются обычным операциям квантования и кодирования, результатом чего является импульсно-кодовое представление передаваемого сигнала. Такой метод называется дифференциальной импульсно-кодовой модуляцией (ДИКМ). Применение ДИКМ позволяет значительно снизить скорость потока, однако ошибка при восстановлении сигнала зависит от величины шага квантования передаваемого кода. Уменьшение шага квантования (увеличение разрядности кодового слова) уменьшает ошибку и соответственно качество восстановленного сигнала, но увеличивает скорость потока. Увеличение шага квантования уменьшает скорость потока, но увеличивает ошибку восстановления. В рамках классической ДИКМ с фиксированным шагом квантования это противоречие неразрешимо. Одно из решений заключается во введении адаптации шага квантования в процесс кодирования-декодирования. Такой алгоритм назван АДИКМ (адаптивная дифференциальная импульсно-кодовая модуляция). Впервые рекомендации по использованию АДИКМ были опубликованы в стандарте
Рис. 1
28
www.finestreet.ru
KiT#37(2).qxd
2/3/04
4:48 PM
Page 29
Êîìïîíåíòû
Êîìïîíåíòû è òåõíîëîãèè, ¹ 2’2004 Международного консультативного комитета по телефонии и телеграфии (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 кбит/с), что часто принимается за эталон качества телефонной связи. Этот алгоритм до сих пор используется при передаче речи по спутниковым и другим каналам связи, несмотря на появление кодеков с гораздо более низкой скоростью потока и достаточным качеством восстановления. Ðåàëèçàöèÿ óïðîùåííîãî àëãîðèòìà ADPCM íà ìèêðîêîíòðîëëåðå Стандарт ITU-T G.726 обладает некой избыточностью для данного применения. В частности, кодек G.726 имеет в своем составе преобразователь входной последовательности ИКМ, кодированной по A- или µ-закону в линейную ИКМ, детектор тона и перехода, предназначенный для определения состава предаваемых данных (речь или факсимильный обмен), и другие дополнительные блоки, улучшающие помехозащищенность сигнала при передачи по линии связи. Рассмотрим структуру упрощенного кодера. Входной сигнал кодера si — последовательность линейно квантованных отсчетов речевого сигнала с разрядностью 16 бит, кодированных дополнительным кодом. Выходным сигналом кодера является последовательность адаптивно кодированных четырехразрядных отсчетов ошибки предсказания t, следующих с частотой дискретизации, равной входной.
Рис. 2. Структурная схема процесса кодирования
Рис. 3. Структурная схема процесса декодирования
www.finestreet.ru
Таким образом, кодер ADPCM позволяет сократить скорость потока в 4 раза при кодировании 16-разрядных входных данных и в 2 раза при кодировании 8-разрядных данных. Согласно рекомендациям ITU G.721, в речевых системах ADPCM в качестве входного сигнала используется 16-разрядный цифровой поток с частотой дискретизации 8 кГц. Скорость такого потока равна 16?8000 = 128 кбит/с. Скорость потока на выходе кодера составляет 4?8000 = 32 кбит/с. Адаптационная способность рассматриваемого кодера основана на информации об абсолютном значении предыдущего отсчета ошибки предсказания. Для простоты реализации системы применен табличный метод адаптации (табл. 1–2). Основное отличие рассматриваемого алгоритма от алгоритма ITU G.721 состоит в принципе предсказания. Адаптивный предсказатель кодера ITU G.721 рассчитывает значение предсказанного отсчета, используя в качестве опорных данных значения шести предыдущих ошибок квантования и двух предыдущих предсказанных значений. В данной системе предсказание осуществляется по одной предыдущей ошибке квантования и по одному предыдущему предсказанному отсчету. Синхронность работы кодера и декодера системы обеспечивается тем, что часть кодера представляет собой декодер, поэтому передавать по каналу данные об адаптации нет необходимости. Сама процедура кодирования-декодирования занимает порядка 600 слов командной памяти и 13 байт памяти данных. Этому требованию по ресурсам удовлетворяют все микроконтроллеры Microchip. Наиболее оптимальным является использование новых Flash-микроконтроллеров, имеющих в своем составе 10-битный АЦП. В семействе маловыводных контроллеров PIC12 (8-выводный корпус) это PIC12F675, имеющий программную память размером 1 Кслово, встроенную память EEPROM, 2 таймера (8и 16-битный), компаратор. В том же семействе есть новейший PIC12F683, имеющий увели-
Таблица 1. Поисковая таблица индексов адаптации шага квантования (16 значений) –1
–1
–1
–1
2
4
6
8
–1
–1
–1
–1
2
4
8
8
13 28 60 130 279 598 1282 2749 5894 12635 27086
14 31 66 143 307 658 1411 3024 6484 13899 29794
Таблица 2. Поисковая таблица шагов квантования (89 значений) 7 16 34 73 157 337 724 1552 3327 7132 15289 32767
8 17 37 80 173 371 796 1707 3660 7845 16818
9 19 41 88 190 408 876 1878 4026 8630 18500
10 21 45 97 209 449 963 2066 4428 9493 20350
11 23 50 107 230 494 1060 2272 4871 10442 22385
12 25 55 118 253 544 1166 2499 5358 11487 24623
ченную до 2 Кслов память программ, аппаратный модуль ШИМ и, что немаловажно, режимы пониженного энергопотребления. В сочетании с низкой стоимостью появляется возможность встраивания голосовых функций практически в любые устройства. Другой вариант — использование более мощного микроконтроллера семейства 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.
29