Оглавление.
Введение. Общие вопросы компьютерного распознавания и порождения речи.
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.
|
|