Оглавление.Введение. Общие вопросы компьютерного распознавания и порождения речи.1. Программирование звука в Windows. 2. Основы цифровой обработки звуковых сигналов. 3. Определение параметров речевого сигнала. 4. Алгоритмы распознавания. 5. Использование Microsoft Speech API 5.1 для синтеза и распознавания речи. 6. Использование Microsoft Speech API 4.0 для синтеза речи. Ссылки. Об авторе. |
Компьютерное распознавание и порождение речиГлава 1. Программирование звука в Windows.
1.2.2.Воспроизведение звука.1). Если нас не устраивает работа со стандартным устройством вывода, определенным в операционной системе, мы можем вызвать функцию waveOutGetNumDevs, чтобы получить число устройств вывода, определенных в системе, а затем запросить параметры и имена этих устройств при помощи waveOutGetDevCaps. Естественно, если мы планируем работать со стандартным устройством вывода, то этот шаг для нас лишний. 2) Открываем устройство вывода функцией waveOutOpen, в параметрах которой указываем формат звукового потока и способ уведомления о выполнении запрошенных операций. 3) Создаем в программе один или несколько буферов с заголовками, заполняем заголовки буферов по установленным правилам. 4)Заполняем созданный буфер (буферы) передаваемыми для Воспроизведения цифровыми данными 5) Подготавливаем буфер (буферы) к передаче драйверу посредством функции waveOutPrepare. 6) Передаем буфер (буферы) драйверу звуковой карты при помощи функции waveOutWrite, одновременно дающей команду драйверу запустить ЦАП адаптера, который начинает извлекать звуковые отсчеты. Драйвер воспроизводит данные в соответствии со значением поля dwBufferLength заголовка буфера. Если противное не указано в параметрах функции waveOutOpen, после проигрывания очередного сообщения драйвер посылает процессу, потоку или указанному окну приложения сообщение MM_WOM_DONE, после чего программа может заполнить буфер новыми данными и снова вызвать waveOutWrite. Движение потока приостанавливается (останавливается) функцией waveOutPause и возобновляется функцией waveOutRestart . После окончания записи необходимо освободить буфер (буферы) функцией waveOutUnprepareHeader и закрыть устройство функцией waveOutClose. Текущий уровень громкости воспроизведения можно получить функцией waveOutGetVolume и установить функцией waveOutSetVolume. |