Оглавление.

Введение. Общие вопросы компьютерного распознавания и порождения речи.

1. Программирование звука в Windows.

2. Основы цифровой обработки звуковых сигналов.

3. Определение параметров речевого сигнала.

4. Алгоритмы распознавания.

5. Использование Microsoft Speech API 5.1 для синтеза и распознавания речи.

6. Использование Microsoft Speech API 4.0 для синтеза речи.

Ссылки.

Об авторе.

Компьютерное распознавание и порождение речи

Глава 1. Программирование звука в Windows.

Назад В начало главы Дальше

1.1 Функции высокого уровня.

Функции высокого уровня можно разбить на три группы: простейшие способы воспроизведения звука, функции интерфейса управляющих строк и функции управляющих сообщений MCI.

К простейшим можно отнести следующие функции:

void MessageBeep(UINT uAlert)

- выдача звукового сигнала. Для стандартного звуковог сигнала uAllert равен -1.

BOOL sndPlaySound(LPCSTR lpszSounFile, UINT wFlags)

- проигрывание звукового файла. lpszSoundFile - указатель на заканчивающуюся символом '\0' строку содержащуюю путь к wav-файлу, wFlags может, в частности, иметь значения:
SND_SYNC
- в этом случае функция вернет управления только после того, как полностью проиграет файл,
SND_ASYNC
- управление возвращается немедленно,
SND_ASYNC | SND_LOOP
- воспроизведение зацикливается до тех пор, пока не будет вызвана функция sndPlaySound(NULL,SND_SYNC) или sndPlaySound(NULL,SND_ASYNC).

Функции интефейса управляющих сообщений рассматривать не будем. Интефейс управляющих строк реализуется при помощи функции

DWORD mciSendString (
LPCSTR lpstrCommand, // управляющая строка
LPSTR lpstrReturnString, // буфер для результата
UINT wReturnLength, //размер буфера
HANDLE hCallback) //идентификатор окна извещения


Функция при удачном завершении возвращает 0. Использование функции mciSendString рассмотрим на примерах.

mciSendString("OPEN NEW TYPE WAVEAUDIO ALIAS rec", NULL, 0, NULL);

- открывает поток записи;

mciSendString("set rec bitspersample 8 samplespersec 8000 channels 1", NULL, 0, NULL);

-устанавливает параметры устройства: 8000 отсчетов в секунду (то есть за одну секунду амплитуда сигнала снимается 8000 раз), для хранения одного отсчета (одного уровня амплитуды сигнала) используется 8 бит, то есть 1 байт, используется один звуковой канал ( то есть запись монофоническая, при стереофонической записи количество каналов - 2);

mciSendString("record rec", NULL, 0, NULL);

-начинает запись; Как правило именно подобными приведенным выше трем командам мы начинаем запись звука.

mciSendString("STOP rec", NULL, 0, NULL);

-останавливает запись,

mciSendString("SAVE rec temp.wav", NULL, 0, NULL);

-сохраняет запись в файл temp.wav.

mciSendString("CLOSE rec", NULL, 0, NULL);

-закрывает поток записи. Вышеприведенные три функции в программе также, как правило, следуют друг за другом в таком порядке, как они здесь приведены.

DWORD result = mciSendString("play temp.wav wait", NULL, 0, NULL);

-проигрывает файл temp.wav.


Распознавание речи. Обработка текстов на естественном языке.
Hosted by uCoz