Электронная библиотека книг Александра Фролова и Григория Фролова.
 
Библиотека
Братьев
Фроловых
Электронная библиотека книг Александра Фролова и Григория Фролова.
Библиотека системного программиста
Программирование на JAVA
ПК. Шаг за шагом
Другие книги
Восстановление данных
Антивирусная защита
Статьи для
программистов
Пользователю компьютера
[Назад] [Содержание]

Синтез и распознавание речи. Современные решения


А.В. Фролов, Г.В. Фролов

Приложение 1. Формат wav-файла

Звуковые данные хранятся в файлах в так называемом формате файла для обмена ресурсами (Resource Interchange File Format, RIFF). Этот же формат файлов используется и для хранения виде (файлы с расширением имени avi).

Файл в формате RIFF содержит вложенные друг в друга фрагменты (chunk). Внешний фрагмент состоит из заголовка и области данных (рис. П1-1). Здесь словом «DWORD» обозначен формат поля данных — двойное слово шириной 32 бит.

Рис. П1-1. Фрагмент "RIFF"

Первое двойное слово заголовка содержит четырехбуквенный код FOURCC, который идентифицирует данные, хранящиеся во фрагменте. Второе двойное слово заголовка хранит размер области данных в байтах (без учета размера самого заголовка).

Область данных имеет переменную длину, однако она должна быть выровнена на границу слова и при необходимости дополнена в конце нулевым байтом до целого числа слов.

Заметим, что формат RIFF не описывает формат данных. Практически файл в формате RIFF может содержать любые мультимедиа данные, причем формат данных зависит от типа данных.

Область, обозначенная на рис. П1-1 как «Данные», может содержать внутри себя другие фрагменты. Для файла, в котором хранятся звуковые данные (wav-файл), эта область содержит идентификатор данных «WAVE», фрагмент формата звуковых данных «fmt » (три символа «fmt» и пробел на конце), а также фрагмент звуковых данных (рис. П1-2).

Рис. П1-2. Формат wav-файла

Файл может дополнительно содержать фрагменты других типов, поэтому не следует думать, что заголовок wav-файла имеет фиксированный формат. Например, в файле может присутствовать фрагмент «LIST» или «INFO», содержащий информацию о правах копирования и другую дополнительную информацию. Из-за ограниченного объема книги мы не будем рассматривать форматы других фрагментов, при необходимости вы можете узнать их из документации, которая поставляется в составе Microsoft MSDN (http://msdn.microsoft.com).

 Область, обозначенная на рис. П1-2 как «Формат данных», описывает звуковые данные. Формат этой области для файлов PCM (записанных с использованием импульсно-кодовой модуляции) соответствует структуре PCMWAVEFORMAT, определенной в файле mmsystem.h следующим образом:

typedef   struct pcmwaveformat_tag 
{
  WAVEFORMAT    wf;
  WORD          wBitsPerSample;
} PCMWAVEFORMAT;

typedef   PCMWAVEFORMAT *PPCMWAVEFORMAT;
typedef   PCMWAVEFORMAT NEAR *NPPCMWAVEFORMAT;
typedef   PCMWAVEFORMAT FAR    *LPPCMWAVEFORMAT;
Структура WAVEFORMAT  также  описана  в файле  mmsystem.h:
typedef   struct waveformat_tag
{
  WORD      wFormatTag;      // тип  формата
  WORD      nChannels;       // количество  каналов   (1  или  2)
  DWORD     nSamplesPerSec;  // частота  дискретизации
  DWORD     nAvgBytesPerSec; // скорость потока данных
  WORD      nBlockAlign;     // выравнивание  блока  данных
} WAVEFORMAT;

typedef   WAVEFORMAT  *PWAVEFORMAT;
typedef   WAVEFORMAT  NEAR *NPWAVEFORMAT;
typedef   WAVEFORMAT  FAR    *LPWAVEFORMAT;

Поле wFormatTag описывает тип формата звуковых данных. Для импульсно-кодовой модуляции PCM, которая поддерживается стандартной библиотекой mmsystem.dll, в этом поле должно находиться значение WAVE_FORMAT_PCM , определенное в файле mmsystem.h:

#define   WAVE_FORMAT_PCM  1

Поле nChannels содержит количество каналов. В нем могут находиться значения 1 (моно) или 2 (стерео).

В поле nSamplesPerSec записана частота дискретизации, то есть количество выборок сигнала в секунду. В этом поле могут находиться стандартные значения (8 000 Гц, 11 025 Гц, 12 000 Гц, 16 000 Гц, 22 050 Гц, 24 000 Гц, 32 000 Гц, 44 100 Гц, 48 000 Гц), либо нестандартные значения, такие как 5000 Кгц или 4400 Кгц. Учтите, что не все драйверы звуковых адаптеров могут работать с нестандартными частотами дискретизации.

Поле nAvgBytesPerSec содержит среднюю скорость потока данных, то есть количество байт в секунду, передаваемых драйверу устройства или получаемых от него. Эта информация может быть использована приложением для оценки размера буфера, необходимого для размещения звуковых данных. Для монофонического сигнала с дискретностью 8 бит численное значение скорости совпадает со значением частоты дискретизации. Для стереофонического сигнала с дискретностью 8 бит она в два раза выше. Точное значение вы можете подсчитать по формуле:

nAvgBytesPerSec    =     (nChannels  *     nSamplesPerSec    *     wBitsPerSample)   /      8
В поле nBlockAlign находится выравнивание блока в байтах, которое подсчитывается по формуле:

nBlockAlign  =     (nChannels  *     wBitsPerSample)   /     8
Поле wBitsPerSample находится в структуре PCMWAVEFORMAT и содержит дискретность сигнала, то есть количество бит, используемых для представления одной выборки сигнала. Обычно используются значения 8 или 16.

Что же касается формата самих звуковых данных, то он зависит от количества каналов и от дискретности.

Для монофонического сигнала с дискретностью 8 бит звуковые данные представляют собой массив однобайтовых значений, каждое из которых является выборкой сигнала.

Для стереофонического сигнала с дискретностью 8 бит звуковые данных имеют формат массива двухбайтовых слов, причем младший байт слова соответствует левому каналу, а старший — правому.

Формат звуковых данных с дискретностью 16 бит выглядит аналогично. Для монофонического сигнала данные хранятся в массиве 16-битовых слов. Для стереофонического используется массив двойных слов, причем младшему слову соответствует левый канал, а старшему — правый.

Диапазон изменения значений выборок сигнала определяется дискретизацией. Для 8-битовых данных он составляет от 0 до 255, причем отсутствию сигнала (полной тишине) соответствует значение 128. Для 16-битовых данных диапазон изменения составляет от –32 768 до 32 767, отсутствию сигнала соответствует значение 0.

Библиографический список и ресурсы Интернета

·         Л.В. Бондарко. Звуковой строй современного русского языка. М.: Просвещение, 1997.

·         Лекции по языкознанию (http://www.tula.net/tgpu/resources/yazykozn/index.htm). Составитель Г.Н. Мерцалова. Тульский государственный педагогический университет им Л.Н. Толстого.

·         А.М. Москаленко. Использование нейросетей для анализа звуковой информации (http://alexmoshp.chat.ru/index.htm). Дипломная работа. Кубанский государственный университет.

·         В. Алексеев. Услышь меня, машина. Компьютерра, №49, 1997 г.

·         Л. Захаров. Проблемы создания аллофонной базы автоматического синтеза речи (http://art.bdk.com.ru/govor/rasp.htm).

·         М.В. Панов. Русский язык. История русского литературного языка. Еженедельник «Русский язык», №26, 2002.

·         В. Ф. Ундриц, К. Л. Хилов, Н. Н. Лозанов, В. К. Супрунов. Болезни уха, горла и носа (руководство для врачей). Медицина, 1969.

·         Г. Бекеши, В. А. Розенблит. Механические свойства уха. Гарвардский университет. Издательство иностранной литературы, Москва, 1963.

·         П. Хоровиц, У. Хилл. Искусство схемотехники: В 2-х т. Пер. с англ. — М: Мир, 1984.

·         А.В. Фролов, Г.В. Фролов. Мультимедиа для Windows. Библиотека системного программиста, т. 15 М: Диалог-МИФИ, 1994 (http://info.datarecovery.ru).

·         Ф. Уоссермен. Нейрокомпьютерная техника: Теория и практика.  — М: Мир, 1992.

·         В.А. Головко. Нейронные сети: обучение, организация и применение. — М.: ИПРЖР, 2001.

·         А.И. Галушкин. Нейрокомпьютеры.  — М.: ИПРЖР, 2000.

·         В.В. Круглов, В.В. Борисов. Искусственные нейронные сети. Теория и практика. — М.: Горячаялиния-Телеком, 2002.

·         В.С. Медведев, В.Г. Потемкин. Нейронные сети. MATLAB 6. — М.: Диалог-МИФИ, 2002.

·         Speech Analysis FAQ. (http://svr-www.eng.cam.ac.uk/~ajr/SA95/SpeechAnalysis.html).

·         Э.М. Куссуль. Ассоциативные нейроподобные структуры. Киев.: Наукова думка, 1990.

·         Г. Нуссбаумер. Быстрое преобразование Фурье и алгоритмы вычисления сверток. — М.: Радио и связь, 1985.

·         Н.М. Астафьева. Вейвлет-анализ: основы теории и примеры приведения. Успехи физических наук, т. 166, № 11. — М.: ИКИ РАН, 1996.

[Назад] [Содержание]


Создание интернет-магазинов: http://www.shop2you.ru/ © Александр Фролов, Григорий Фролов, 1991-2016