Оглавление.Введение. Общие вопросы компьютерного распознавания и порождения речи.1. Программирование звука в Windows. 2. Основы цифровой обработки звуковых сигналов. 3. Определение параметров речевого сигнала. 4. Алгоритмы распознавания. 5. Использование Microsoft Speech API 5.1 для синтеза и распознавания речи. 6. Использование Microsoft Speech API 4.0 для синтеза речи. Ссылки. Об авторе. |
Компьютерное распознавание и порождение речиГлава 2. Основы цифровой обработки звуковых сигналов.
2.2. Свертка.Более подробно коснемся метода свертки (иначе называемом конволюцией). Введем понятие дельта-функции (иначе называемой функцией единичного импульса). Обозначается она так: δ[n]. Дельта-функция определяется так: δ[n]=1 при n=0 и δ[n]=0 при любых n<>0. Под импульсом вообще понимают сигнал, не равный нулю только в одной точке. Дельта-функцию называют еще нормированным импульсом. Далее введем понятие импульсной характеристики. Импульсная характеристика – это сигнал, получаемый на выходе системы при подаче на него дельта-функции (единичного импульса). Любой импульс может быть представлен как смещенная и промасштабированная дельта-функция. Например, рассмотрим импульс {0,0,6,0,0,0}. Он может быть представлен так: y[n]=6δ[n-3] (единичный импульс выглядит как {1,0,0,0,0,0…}). Если x[n] – исходный сигнал, h[n] – импульсная характеристика системы в которую поступает сигнал, то значение выходного сигнала будет равно y[n]=x[n]*h[n], где звездочка обозначает не умножение( как во многих языках программирования), а математическую операцию свертки. Для вычисления свертки используют два алгоритма. Первый, называемый алгоритмом входной стороны, был упомянут чуть выше: сначала производится декомпозиция исходного сигнала из N отсчетов в N импульсов, таких что для i-го импульса zi[n]=x[n] при n=i, zi[n]=0 при n<>i. Тогда zi[n]= zi[i]δ[n-i]. Реакция системы на i-й импульс будет равна смещенной и промасштабированной импульсной характеристике (ввиду линейности системы), то есть yi=zi[i]h[n-i]. Значение же выходного сигнала будет равно сумме y=∑yi. Алгоритм входной стороны для свертки может быть реализован на языке C следующим образом:
Алгоритм выходной стороны дает тот же результат, что и алгоритм выходной стороны, но несколько другим способом – более удобным для вычисления, хотя и делающим неочевидным смысл вычислений. Оказалось, что результат свертки может быть получен с помощью формулы
где M – количество отсчетов в импульсной характеристике. Алгоритм выходной стороны для свертки может быть реализован на языке C следующим образом:
Рассмотрим основные свойства свертки. |