Помощь в написании студенческих работ
Антистрессовый сервис

Анализ речи человека в различных режимах вокализации

Дипломная Купить готовую Узнать стоимостьмоей работы

Во время выполнения дипломной работы возникли некоторые сложности в действии рассматриваемого предмета исследования Цифровое представление звука ценно прежде всего возможностью бесконечного хранения и тиражирования без потери качества, однако преобразование из аналоговой формы в цифровую и обратно все же неизбежно приводит к частичной его потере. Наиболее неприятные на слух искажения, вносимые… Читать ещё >

Анализ речи человека в различных режимах вокализации (реферат, курсовая, диплом, контрольная)

Содержание

  • ВВЕДЕНИЕ
  • ГЛАВА 1. ТЕОРЕТИЧЕСКИЙ АНАЛИЗ ОБЪЕКТА И ПРЕДМЕТА ДИПЛОМНОЙ РАБОТЫ
    • 1. 1. Объект
    • 1. 2. Предмет
  • ГЛАВА 2. ПРАКТИЧЕСКИЙ АНАЛИЗ ПРЕДМЕТА ДИПЛОМНОГО ИССЛЕДОВАНИЯ
    • 2. 1. Общая характеристика практического анализа
    • 2. 2. Особенности предмета исследования
    • 2. 3. Реализация
      • 2. 3. 1. Модуль входа в программу
      • 2. 3. 2. Основной графический модуль
      • 2. 3. 3. Модуль выбора файлов
      • 2. 3. 4. Модуль чтения речевого сигнала
      • 2. 3. 5. Модули анализа звукового сигнала и отображения речи
    • 2. 4. Пример работы программы
  • ГЛАВА 3. НАПРАВЛЕНИЯ СОВЕРШЕНСТВОВАНИЯ РАССМАТРИВАЕМОГО В ДИПЛОМНОЙ РАБОТЕ ПРЕДМЕТА ИССЛЕДОВАНИЯ
    • 3. 1. Проблемы, возникающие в действии рассматриваемого предмета исследования
    • 3. 3. Пути совершенствования рассматриваемого предмета
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ЛИТЕРАТУРЫ
  • ПРИЛОЖЕНИЕ

Для удобства и надежности передаваемую информацию разбивают на блоки (кадры), каждый из которых снабжается собственным набором этих кодов.

2.3 Реализация

Программа имеет дружественный интерфейс и легка в освоении. Графический интерфейс проектируется в среде разработки Visual C#.net. В данной системе можно быстро и качественно разрабатывать графические приложения, используя готовые компоненты.

Интерфейс программы разработан с учетом информативности получаемых пользователем данных. На рисунке 2.

4.1 показано основное окно программы.

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

На верхнем графике изображена частотная характеристика входных звуковых сигналов, а в нижнем — амплитудная характеристика сигналов.

2.

3.1 Модуль входа в программу

При запуске программы вызывается функция «static void Main ()». Эта функция инициализирует приложение путем вызова функции Application. EnableVisualStyles ();. Далее запускается функция, которая составляет стиль программы путем вызова следующей функции Application. SetCompatibleTextRenderingDefault (false);. После нее запускается функция, которая создает диалоговое окно программы путем вызова функции Application. Run (new MainForm ()); и запускает приложение. В теле этой функции так же предусмотрена обработка исключений try — catch.

2.

3.2 Основной графический модуль

Основной графический модуль в исходном коде программы представлен как класс Form1. Он содержит следующие основные графические элементы:

PictureBox1: Вывод графического изображения 1

PictureBox2: Вывод графического изображения 2

textBox2: Вывод результатов сравнения графиков

2.

3.3 Модуль выбора файлов Выбор режима работы программы осуществляется нажатием кнопки «Mode». При ее нажатии вызывается функция-обработчик этого события «private void openFile_pro_Click (object sender, EventArgs e)» Функция проверяет и сохраняет указанные файлы.

2.

3.4 Модуль чтения речевого сигнала Чтение и обработка звукового сигнала осуществляется функцией «private void start_Click (object sender, EventArgs e)». В этой функции задается файлы репродуктивной и продуктивной речи. Длина сигнала по времени определяется с помощью функции tmRefresh_Tick (). Дискретезированный и отфильтрованный сигн

2.

3.5 Модули анализа звукового сигнала и отображения речи Анализ и отображение звукового сигнала происходит в функции «Void AudioFrame. WaveIn (short *buf, int len)» после того как сигнал записан, дискретезирован и отфильтрован.

2.4 Пример работы программы

Перед началом работы с программлой, непосредственно после запуска программы необходимо выбрать файлы репродуктивной и продуктивной речи Рис 2.

4.2 .

м

Рисунок 2.

4.1 Главное окно программы

Рисунок 2.

4.2 Окно выбора файлов репродуктивной и продуктивной речи.

После выбора файлов для программы нужно нажать кнопку «Пуск», в центре главного окна программы на панели с вкладками. После нажатия кнопки начнется чтение сигнала. Далее следует посмотреть результаты сравнения графиков репродуктивной и продуктивной речи путем нажатия вкладки «Результат» в левом верхнем углу экрана.

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

На рисунке 2.

4.3 показан результат работы программы. Программа работает успешно.

Рисунок 2.

4.3 Окно нормализации и спектрограммы репродуктивной и продуктивной речи.

На рисунке 2.

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

Рисунок 2.

4.4 Окно после фильтрации репродуктивной и продуктивной речи.

Рисунок 2.

4.4 Окно после темпо-ритмого анализа репродуктивной и продуктивной речи.

Рисунок 2.

4.4 Окно сравнения графики с репродуктивной и продуктивной речью.

ГЛАВА 3. НАПРАВЛЕНИЯ СОВЕРШЕНСТВОВАНИЯ РАССМАТРИВАЕМОГО В ДИПЛОМНОЙ РАБОТЕ ПРЕДМЕТА ИССЛЕДОВАНИЯ

3.

1. Проблемы, возникающие в действии рассматриваемого предмета исследования

Во время выполнения дипломной работы возникли некоторые сложности в действии рассматриваемого предмета исследования Цифровое представление звука ценно прежде всего возможностью бесконечного хранения и тиражирования без потери качества, однако преобразование из аналоговой формы в цифровую и обратно все же неизбежно приводит к частичной его потере. Наиболее неприятные на слух искажения, вносимые на этапе оцифровки — гранулярный шум, возникающий при квантовании сигнала по уровню из-за округления амплитуды до ближайшего дискретного значения. В отличие от простого широкополосного шума, вносимого ошибками квантования, гранулярный шум представляет собой гармонические искажения сигнала, наиболее заметные в верхней части спектра.

Мощность гранулярного шума обратно пропорциональна количеству ступеней квантования, однако из-за логарифмической характеристики слуха при линейном квантовании (постоянная величина ступени) на тихие звуки приходится меньше ступеней квантования, чем на громкие, и в результате основная плотность нелинейных искажений приходится на область тихих звуков. Это приводит к ограничению динамического диапазона, который в идеале (без учета гармонических искажений) был бы равен соотношению сигнал/шум, однако необходимость ограничения этих искажений снижает динамический диапазон для 16-разрядного кодирования до 50−60 дБ.

Положение могло бы спасти логарифмическое квантование, однако его реализация в реальном времени весьма сложна и дорога.

При восстановлении звука из цифровой формы в аналоговую возникает проблема сглаживания ступенчатой формы сигнала и подавления гармоник, вносимых частотой дискретизации. Из-за неидеальности АЧХ фильтров может происходить либо недостаточное подавление этих помех, либо избыточное ослабление полезных высокочастотных составляющих. Плохо подавленные гармоники частоты дискретизации искажают форму аналогового сигнала (особенно в области высоких частот), что создает впечатление «шероховатого», «грязного» звука.

3.3 Пути совершенствования рассматриваемого предмета Поскольку любой цифровой сигнал представляется реальной электрической кривой напряжения или тока — его форма так или иначе искажается при любой передаче, а «замороженный» для хранения сигнал (сигналограмма) подвержен деградации в силу обычных физических причин. Все эти воздействия на форму несущего сигнала являются помехами, которые до определенной величины не изменяют информационного содержания сигнала, как отдельные искажения и выпадения букв в словах обычно не мешают правильному пониманию этих слов, причем избыточность информации, как и увеличение длины слов, повышает вероятность успешного распознавания.

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

Для того, чтобы качество несущего сигнала не ухудшалось, любая передача полезной звуковой информации — копирование, запись на носитель и считывание с него — обязательно должна включать операцию восстановления формы несущего сигнала, а в идеале — и первичного цифрового вида сигнала информационного, и лишь после этого заново сформированный несущий сигнал может быть передан следующему потребителю. В случае прямого копирования без восстановления (например, обычным переписыванием видеокассеты с цифровым сигналом, полученным при помощи ИКМ-приставки, на обычных видеомагнитофонах) качество цифрового сигнала ухудшается, хотя он по-прежнему полностью содержит всю переносимую им информацию. Однако после многократного последовательного копирования или длительного хранения качество ухудшается настолько, что начинают возникать неисправимые ошибки, необратимо искажающие переносимую сигналом информацию. Поэтому копирование и передачу цифровых сигналов необходимо вести только в цифровых устройствах, а при хранении на носителях — своевременно «освежать» не дожидаясь необратимой деградации (для магнитных носителей этот срок оценивается в несколько лет). Правильно переданная или обновленная цифровая сигналограмма качества не теряет и может копироваться и существовать вечно в абсолютно неизменном виде.

Тем не менее, не следует забывать, что корректирующая способность любого кода конечна, а реальные носители далеки от идеальных, поэтому возникновение неисправимых ошибок — на такая уж редкая вещь, особенно при неаккуратном обращении с носителем. При чтении с новых и правильно хранимых DAT-кассет или компакт-дисков в качественных и надежных аппаратах таких ошибок практически не возникает, однако при старении, загрязнении и повреждении носителей и считывающих систем их становится больше. Одиночная неисправленная ошибка почти всегда незаметна на слух благодаря интерполяции, однако она приводит к искажению формы исходного звукового сигнала, а накопление таких ошибок со временем начинает ощущаться и на слух.

Отдельную проблему составляет сложность регистрации неисправленных ошибок, а также проверки идентичности оригинала и копии. Чаще всего конструкторы цифровых звуковых устройств, работающих в реальном времени, не озабочены вопросом точной проверки достоверности передачи, считая вполне достаточными меры, принятые для коррекции ошибок. Невозможность в общем случае повторной передачи ошибочного отсчета или блока приводит к тому, что интерполяция происходит скрытно и после копирования нельзя с уверенностью сказать, точно ли скопирован исходный сигнал. Индикаторы ошибки, имеющиеся в ряде устройств, обычно включаются только в момент ее возникновения, и в случае одиночных ошибок их срабатывание легко может остаться незамеченным. Даже в системах на основе персональных компьютеров чаще всего нет возможности контролировать правильность приема по цифровому интерфейсу или прямого считывания CD; выходом является только многократное повторение операции и сравнение результатов.

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

Аммерал Л. Принципы программирования в машинной графике. — М.: Сол Систем, 1992.

Крамер Г. Математические методы статистики. — М.: Мир, 2005.

Строустрап Б. Язык программирования С++. — М.: Мир, 2004. — 248 с.

Кнут Д. Искусство программирования для ЭВМ. — М.: Мир, 2006. — Т. 1−2.

Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. — М.: Наука, 2009. — 740с.

Искусственный интеллект. Системы общения и экспер тные системы. Кн. 1 / Под ред. Э. В. Попова. — М.: Радио и связь, 2000. — 461 с.

Оппенгейн А.В., Шафер Р. В. Цифровая обработка сигналов, М.: Радио и связь, 2009 ., 347 с.

Рабинер Л. Р. Шафер Р.В. Цифровая обработка речевых сигналов, М.: Радио и связь, 2001 ., 258 с.

Литюк В. И. Методическое пособие № 2231 часть 3 «Методы расчета и проектирование цифровых многопроцессорных устройств обработки радиосигналов», Таганрог, 2005, 48 с.

Кузнецов В., Отт А. Автоматический синтез речи. — Таллинн: Валгус, 2009. — 135 с.

Методы автоматического распознавания речи / Под ред. У.Ли. — М.: Мир, 2002. — 716 с.

Зиндер Л. Р. Общая фонетика. — М.: Высшая школа, 1979. — 312 с.

Златоустова Л.В., Потапова Р. К., Трунин-Донской В. Н. Общая и прикладная фонетика. М.: МГУ, 2006. — 304 с.

ПРИЛОЖЕНИЕ

1. Листинг программы

1.1) Main. cs

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Text;

using System.Windows.Forms;

using CleanToneEngine;

using FMOD;

namespace FMODSpectrum

{

public partial class MainFrm: Form

{

private CT_FMODWrapper SndEngine;

private CT_FMODWrapper SndEngine2;

private Sound MainSnd;

private Sound MainSnd2;

private Graphics Gr;

private Graphics Gr2;

private Graphics Grr;

private Graphics Grr2;

public MainFrm ()

{

InitializeComponent ();

}

/**

* Загрузки звукого файлов

*/

private void loadFile () {

}

/**

*

*Загрука главной модули.

*/

private void Form1_Load (object sender, EventArgs e)

{

SetUpEnvironnement ();

}

private void SetUpEnvironnement ()

{

//this.Hide ();

this.FormBorderStyle = FormBorderStyle. None;

//this.Width = 512;

//this.Height = 256;

pbSpectrum.Top = 21;

pbSpectrum.Left = 28;

pbSpectrum.Width = 512;

pbSpectrum.Height = 136;

pbWaveOsci.Top = 136;

pbWaveOsci.Left = 28;

pbWaveOsci.Width = 512;

pbWaveOsci.Height = 128;

// для репродутивной речью

pbSpectrum2.Top = 21;

pbSpectrum2.Left = 28;

pbSpectrum2.Width = 512;

pbSpectrum2.Height = 136;

pbWaveOsci2.Top = 136;

pbWaveOsci2.Left = 28;

pbWaveOsci2.Width = 512;

pbWaveOsci2.Height = 128;

this.CenterToScreen ();

this.FormBorderStyle = FormBorderStyle. Fixed3D;

this.Show ();

}

/**

* При закрытие приложение

*/

void MainFrm_FormClosing (object sender, FormClosingEventArgs e)

{

if (SndEngine ≠ null)

{

SndEngine.DestroySound (ref MainSnd);

SndEngine.Dispose ();

}

if (SndEngine2 ≠ null)

{

SndEngine2.DestroySound (ref MainSnd2);

SndEngine2.Dispose ();

}

if (Gr ≠ null)

{

Gr.Dispose ();

Gr = null;

}

if (Gr2 ≠ null)

{

Gr2.Dispose ();

Gr2 = null;

}

if (Grr ≠ null)

{

Grr.Dispose ();

Grr = null;

}

if (Grr2 ≠ null)

{

Grr2.Dispose ();

Grr2 = null;

}

}

/**

*

* Обновление графики

*/

private void tmRefresh_Tick (object sender, EventArgs e)

{

try

{

Gr.Clear (Color.Black);

SndEngine.SetSpectrumValue (pbSpectrum.Width);

for (int i = 0; i < pbSpectrum. Width; i++)

{

Gr.DrawLine (Pens.Blue, i, pbSpectrum. Height, i, pbSpectrum. Height — (int)(SndEngine.GetSpectrumHeight (i) * 10));

}

Gr2.Clear (Color.Black);

SndEngine.SetWaveData (pbWaveOsci.Width);

for (int i = 0; i < pbWaveOsci. Width; i++)

{

Gr2.DrawRectangle (Pens.Red, i, pbWaveOsci. Height / 2 + (int)(SndEngine.GetWaveHeight (i) * 100), 1, 1);

}

//Для репродуктивной речи

Grr.Clear (Color.Black);

SndEngine2.SetSpectrumValue (pbSpectrum2.Width);

for (int i = 0; i < pbSpectrum2. Width; i++)

{

Grr.DrawLine (Pens.Blue, i, pbSpectrum2. Height, i, pbSpectrum2. Height — (int)(SndEngine2.GetSpectrumHeight (i) * 10));

}

Grr2.Clear (Color.Black);

SndEngine2.SetWaveData (pbWaveOsci2.Width);

for (int i = 0; i < pbWaveOsci2. Width; i++)

{

Grr2.DrawRectangle (Pens.Red, i, pbWaveOsci2. Height / 2 + (int)(SndEngine.GetWaveHeight (i) * 100), 1, 1);

}

Application.DoEvents ();

}

catch (Exception ex)

{

MessageBox.Show («error occcured» + ex);

}

}

private void pbWaveOsci_Click (object sender, EventArgs e)

{

}

/**

* Открыть продуктивный файл

*/

private void openFile_pro_Click (object sender, EventArgs e)

{

OFD1.Filter = «Типы файла: *.wav,*.mp3-*.wav;*.mp3» ;

OFD1.ShowDialog ();

this.filepro.Text = OFD1. FileName;

}

private void openFileRepro_Click (object sender, EventArgs e)

{

OFD2.Filter = «Типы файла: *.wav,*.mp3-*.wav;*.mp3» ;

OFD2.ShowDialog ();

this.fileRepro.Text = OFD2. FileName;

}

private void filepro_TextChanged (object sender, EventArgs e)

{

}

/// Сравнения файлов

/// ref. to processor object

/// ref. to processor object

/// True/False

private String Compare (ref CT_FMODWrapper Wave1, ref CT_FMODWrapper Wave2)

{

Boolean eq;

if (Wave1.Channels ≠ Wave2. Channels) eq= false;

if (Wave1.BitsPerSample ≠ Wave2. BitsPerSample) eq= false;

if (Wave1.SampleRate ≠ Wave2. SampleRate) eq= false;

eq = true;

compareTxt.Text = «Характеристики графики звука с продуктивной речью n» ;

compareTxt.Text += «Количество каналов :+» + Wave1. Channels +" (mono)n" ;

compareTxt.Text += «Аудио Размер выборки :» + Wave1. DataLength + «битn» ;

compareTxt.Text += «Скорость передачи данных:+» + Wave1. BitsPerSample + «kbpsn» ;

compareTxt.Text += «Аудио дискретизации:+» + Wave1. SampleRate + «n» ;

compareTxt.Text += «Аудио форматы: PCMn» ;

//compareTxt.Text += «Аудио Амплитуды:+» + Wave1 + «n» ;

compareTxt.Text = «Характеристики графики звука с репродуктивной речью n» ;

compareTxt.Text += «Количество каналов :+» + Wave2. Channels + «(mono)n» ;

compareTxt.Text += «Аудио Размер выборки :+» + Wave2. DataLength + «битn» ;

compareTxt.Text += «Скорость передачи данных:+» + Wave2. BitsPerSample + «kbpsn» ;

compareTxt.Text += «Аудио дискретизации:+» + Wave2. SampleRate + «n» ;

compareTxt.Text += «Аудио форматы: PCMn» ;

//compareTxt.Text += «Аудио Амплитуды:+» + Wave1 + «n» ;

return compareTxt.Text.ToString ();

}

private void start_Click (object sender, EventArgs e)

{

if (OFD1.FileName ≠ «»)

{

//создаем экземпляр класса CT_FMODWrapper

SndEngine = new CT_FMODWrapper ();

MainSnd = SndEngine. CreateSound (OFD1.FileName, CT_FMODWrapper.CTSoundType.Stream);

SndEngine.WaveHeaderIN (OFD1.FileName);

SndEngine.PlaySound (ref MainSnd);

Gr = pbSpectrum. CreateGraphics ();

Gr2 = pbWaveOsci. CreateGraphics ();

tmRefresh.Enabled = true;

this.groupBox1.Visible = true;

//this.FormClosing += new FormClosingEventHandler (MainFrm_FormClosing);

}

else

{

MessageBox.Show (this," Файл с продуктивной речью не введен" ," Ощибка", MessageBoxButtons. RetryCancel);

}

if (OFD2.FileName ≠ «»)

{

SndEngine2 = new CT_FMODWrapper ();

MainSnd2 = SndEngine2. CreateSound (OFD2.FileName, CT_FMODWrapper.CTSoundType.Stream);

SndEngine2.PlaySound (ref MainSnd2);

SndEngine2.WaveHeaderIN (OFD2.FileName);

Grr = pbSpectrum2. CreateGraphics ();

Grr2 = pbWaveOsci2. CreateGraphics ();

tmRefresh.Enabled = true;

this.groupBox2.Visible = true;

this.FormClosing += new FormClosingEventHandler (MainFrm_FormClosing);

}

else

{

MessageBox.Show (this, «Файл с репродуктивной речью не введен», «Ощибка», MessageBoxButtons. RetryCancel);

}

this.Compare (ref SndEngine, ref SndEngine2);

}

private void menuItem2_Click (object sender, EventArgs e)

{

}

}

}

1.2) FMODWaveOut. cs

using System;

using System.Collections.Generic;

using System. Text;

using System.Runtime.InteropServices;

using FMOD;

using System. IO;

namespace CleanToneEngine

{

public class CT_FMODWrapper

{

#region Enum & GlobalVars

public enum CTSoundType: int

{

Sound = 0, Stream = 1

}

private FMOD. System SndCore = null;

// Public Fields can be used for various operations

public int Length;

public short Channels;

public int SampleRate;

public int DataLength;

public short BitsPerSample;

public ushort MaxAudioLevel;

private Channel cChannel = null;

private float[] Spectrum = new float[512];

private float[] WaveData = new float[512];

#endregion

#region Construcor & Destructor

public CT_FMODWrapper ()

{

Factory.System_Create (ref SndCore);

SndCore.init (32, FMOD.INITFLAG.NORMAL, (IntPtr)null);

}

public void Dispose ()

{

SndCore.close ();

SndCore.release ();

}

#endregion

#region Common Functions

public void SetLoop (bool bValue, Sound Snd)

{

if (bValue == true)

{

Snd.setMode (FMOD.MODE.LOOP_NORMAL);

}

else

{

Snd.setMode (FMOD.MODE.LOOP_OFF);

}

}

#region Volume

public void SetVolume (float fValue)

{

cChannel.setVolume (fValue);

}

public float GetVolume ()

{

float fBuffer = 0.0f;

cChannel.getVolume (ref fBuffer);

return fBuffer;

}

#endregion

#endregion

#region Spectrum Data

public float GetSpectrumHeight (int iFrequency)

{

if (iFrequency <= Spectrum. Length)

{

return Spectrum[iFrequency] * 1000;

}

return -1;

}

public void SetSpectrumValue (int iMax)

{

// !!!

// The spectrum data are only available for Streamed Sounds

SndCore.getSpectrum (Spectrum, iMax, 0, FMOD. DSP_FFT_WINDOW.TRIANGLE);

}

#endregion

#region WaveData

public void SetWaveData (int iMax)

{

SndCore.getWaveData (WaveData, iMax, 0);

}

public float GetWaveHeight (int Offset)

{

if (Offset <= 512)

{

return WaveData[Offset];

}

return -1;

}

/// Read the wave file header and store the key values in public variable.

/// Adapted from — Concatenation Wave Files using C# 2005 by By Ehab Mohamed Essa

/// The physical path of wave file incl. file name for reading

/// True/False

public bool WaveHeaderIN (string strPath)

{

if (strPath == null) strPath = «» ;

if (strPath == «») return false;

FileStream fs = new FileStream (strPath, FileMode. Open, FileAccess. Read);

System.IO.BinaryReader br = new BinaryReader (fs);

try

{

Length = (int)fs.Length — 8;

fs.Position = 22;

Channels = br. ReadInt16(); //1

fs.Position = 24;

SampleRate = br. ReadInt32(); //8000

fs.Position = 34;

BitsPerSample = br. ReadInt16(); //16

DataLength = (int)fs.Length — 44;

byte[] arrfile = new byte[fs.Length — 44];

fs.Position = 44;

fs.Read (arrfile, 0, arrfile. Length);

}

catch

{

return false;

}

finally

{

br.Close ();

fs.Close ();

}

return true;

}

#endregion

#region SoundObject functions

public Sound CreateSound (string sFilename, CTSoundType Mode)

{

Sound sndBuffer = null;

switch (Mode)

{

case CTSoundType. Sound:

SndCore.createSound (sFilename, FMOD.MODE.HARDWARE, ref sndBuffer);

break;

case CTSoundType. Stream:

SndCore.createStream (sFilename, FMOD.MODE.SOFTWARE — FMOD.MODE._2D, ref sndBuffer);

break;

}

return sndBuffer;

}

public void DestroySound (ref Sound Snd)

{

Snd.release ();

Snd = null;

}

public void PlaySound (ref Sound Snd)

{

SndCore.playSound (CHANNELINDEX.FREE, Snd, false, ref cChannel);

}

#endregion

}

}

1.4) AudioFrame. cs

;

Показать весь текст

Список литературы

  1. Л. Принципы программирования в машинной графике. — М.: Сол Систем, 1992.
  2. Г. Математические методы статистики. — М.: Мир, 2005.
  3. . Язык программирования С++. — М.: Мир, 2004. — 248 с.
  4. Д. Искусство программирования для ЭВМ. — М.: Мир, 2006. — Т. 1−2.
  5. Г., Корн Т. Справочник по математике для научных работников и инженеров. — М.: Наука, 2009. — 740с.
  6. Искусственный интеллект. Системы общения и экспертные системы. Кн. 1 / Под ред. Э. В. Попова. — М.: Радио и связь, 2000. — 461 с.
  7. А.В., Шафер Р. В. Цифровая обработка сигналов, М.: Радио и связь, 2009 ., 347 с.
  8. Л. Р. Шафер Р.В. Цифровая обработка речевых сигналов, М.: Радио и связь, 2001 ., 258 с.
  9. В.И. Методическое пособие № 2231 часть 3 «Методы расчета и проектирование цифровых многопроцессорных устройств обработки радиосигналов», Таганрог, 2005, 48 с.
  10. В., Отт А. Автоматический синтез речи. — Таллинн: Валгус, 2009. — 135 с.
  11. Методы автоматического распознавания речи / Под ред. У.Ли. — М.: Мир, 2002. — 716 с.
  12. Л.Р. Общая фонетика. — М.: Высшая школа, 1979. — 312 с.
  13. Л.В., Потапова Р. К., Трунин-Донской В.Н. Общая и прикладная фонетика. М.: МГУ, 2006. — 304 с.
Заполнить форму текущей работой
Купить готовую работу

ИЛИ