Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Анализ звука алгоритмом FFT  [new]
etnos
Member

Откуда:
Сообщений: 12
Привет,

стоит задача обработать запись голоса с микрофона и выдать инфу о всех возможных (реализуемых) характеристиках голоса.

написал программу для андроид, голос записывается с микрофона в формате byte[] or short[]

public static int bufferSize = AudioRecord.getMinBufferSize(8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);

private static final int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;

recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,
8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
audioEncoding, bufferSize);


tempBuffer = new byte[bufferSize];

recordInstance.read(tempBuffer, 0, bufferSize);


в итоге каждую секунду получаю tempBuffer - данные с микрофона.

после этого использую библиотку JTransforms.jar для анализа данных алгоритмом FFT. получаю массив float. A что делать дальше?

интересует:
1. амплитуда,
2. частота,
3. Duration in seconds
4. Mean pitch
5. Std dev pitch
6. Min pitch
7. Max pitch
8. Nr of pulses
9. Nr of period
10. Mean for one period
11. Std dev for one period
12. Fraction of unvoice frames
13. Nr of voice break
14. Procent of voice break
20 мар 12, 20:07    [12283979]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
жаба-то причём тут? Если не знаешь что представляет из себя массив с результатом быстрого преобразования фурье то надо почитать теорию. Вот тут например
http://websound.ru/

в общем случае БПФ тебе в анализе голоса не очень поможет.
21 мар 12, 10:43    [12286040]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
etnos
Member

Откуда:
Сообщений: 12
1024,

ок, спасибо за ссылку, почитаю что там есть.

Если для анализа голоса БПФ мне не поможет, то что лучше использовать ?
21 мар 12, 20:06    [12291138]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
etnos
1024,

ок, спасибо за ссылку, почитаю что там есть.

Если для анализа голоса БПФ мне не поможет, то что лучше использовать ?


не знаю. Зависит от задачи.
21 мар 12, 22:06    [12291723]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 24887
etnos,

Имхо, преобразование Фурье Вы правильно выбрали. Правильной дорогой идёте.
22 мар 12, 00:42    [12292280]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
Реалист
Member

Откуда:
Сообщений: 2540
Блог
ShSerge
etnos,

Имхо, преобразование Фурье Вы правильно выбрали. Правильной дорогой идёте.

БПФ позволяет анализировать только одну из характеристик голоса - частотную.
Но у голоса есть и амплитудные параметры, которые с помощью преобразования Фурье анализировать в принципе невозможно, так как они "размываются" во времени. И время "размытия" тем больше, чем точнее будет анализироваться частотные характеристики голоса (чем больше будет окно преобразования).

Поэтому для анализа голоса нужно использовать два типа преобразований - Фурье для анализа частотного спектра и Вейвлет для анализа амплитудно-временных характеристик. Если использовать только БПФ, то из анализа выпадут таки звуки, как К,Ч,Т,П и т.д. То есть те, в которых присутствует "взрывная" составляющая.
22 мар 12, 08:09    [12292638]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
Реалист
ShSerge
etnos,

Имхо, преобразование Фурье Вы правильно выбрали. Правильной дорогой идёте.

БПФ позволяет анализировать только одну из характеристик голоса - частотную.
Но у голоса есть и амплитудные параметры, которые с помощью преобразования Фурье анализировать в принципе невозможно, так как они "размываются" во времени. И время "размытия" тем больше, чем точнее будет анализироваться частотные характеристики голоса (чем больше будет окно преобразования).

Поэтому для анализа голоса нужно использовать два типа преобразований - Фурье для анализа частотного спектра и Вейвлет для анализа амплитудно-временных характеристик. Если использовать только БПФ, то из анализа выпадут таки звуки, как К,Ч,Т,П и т.д. То есть те, в которых присутствует "взрывная" составляющая.


а зачем? Цель-то какая? Ну будет получен спектр слова "Жопа" произнесённого бухгалтером Марией Петровной. А дальше что? Зависит от конечной цели.
22 мар 12, 10:30    [12293132]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
Реалист
Member

Откуда:
Сообщений: 2540
Блог
1024,

Я просто показал, что одной информации из БПФ "о всех возможных (реализуемых) характеристиках голоса" может оказаться недостаточно.
Понятно, что все зависит от конечной цели. В противном случае можно было бы использовать не БПФ, а просто обычное вычитание
22 мар 12, 11:39    [12293672]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
etnos
Member

Откуда:
Сообщений: 12
Цель проекта в том, чтобы сравнивать голос человека через оприделенное время, к примеру, через 5 мин, и потом на основе характеристик голоса сделать вывод как на человека повлияло то, что он делал в течении этих 5мин.

а в течении этих 5 мин пользователю будет показывать видео, в котором будет много эмоциональных моментов.

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

к примеру 5-6 различных видео с различными эмоциями и нужно выявить которое из эмоций наибольше всего повлияло на человека
22 мар 12, 13:37    [12294761]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
etnos
Цель проекта в том, чтобы сравнивать голос человека через оприделенное время, к примеру, через 5 мин, и потом на основе характеристик голоса сделать вывод как на человека повлияло то, что он делал в течении этих 5мин.

а в течении этих 5 мин пользователю будет показывать видео, в котором будет много эмоциональных моментов.

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

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


к жаве это точно отношения не имеет. Да и к программированию наверна тоже - тут же надо сначала выяснить какие характеристики являются значимыми. Вобщем не сюда.
22 мар 12, 14:18    [12295252]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
Реалист
Member

Откуда:
Сообщений: 2540
Блог
1024,

+1024 (Извини за тавтологию)
22 мар 12, 15:24    [12295924]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
etnos
Member

Откуда:
Сообщений: 12
1024
к жаве это точно отношения не имеет. Да и к программированию наверна тоже - тут же надо сначала выяснить какие характеристики являются значимыми. Вобщем не сюда.


может действительно не сюда, но проект пишется на Java. Нужные характеристики тоже известны, это:
1. амплитуда,
2. частота,
3. Duration in seconds
4. Mean pitch
5. Std dev pitch
6. Min pitch
7. Max pitch
8. Nr of pulses
9. Nr of period
10. Mean for one period
11. Std dev for one period
12. Fraction of unvoice frames
13. Nr of voice break
14. Procent of voice break

я ресечил в гугле и ничего кроме FFT по анализу звука не нашел, вот по этому меня и интересует может есть библиотеки или алгоритмы или открытые проекты или статьи в которых описывается как из записанного с микрофона голоса можно найти нужные параметры?
22 мар 12, 17:20    [12297037]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
etnos
1024
к жаве это точно отношения не имеет. Да и к программированию наверна тоже - тут же надо сначала выяснить какие характеристики являются значимыми. Вобщем не сюда.


может действительно не сюда, но проект пишется на Java. Нужные характеристики тоже известны, это:
1. амплитуда,
2. частота,
3. Duration in seconds
4. Mean pitch
5. Std dev pitch
6. Min pitch
7. Max pitch
8. Nr of pulses
9. Nr of period
10. Mean for one period
11. Std dev for one period
12. Fraction of unvoice frames
13. Nr of voice break
14. Procent of voice break

я ресечил в гугле и ничего кроме FFT по анализу звука не нашел, вот по этому меня и интересует может есть библиотеки или алгоритмы или открытые проекты или статьи в которых описывается как из записанного с микрофона голоса можно найти нужные параметры?


у тебя есть набор байтов с микрофона. Что есть амплитуда? Ну найди в массиве самое большое число. Чисто статистически это максимальная амплитуда. Что это тебе даст? Да ничего.

или 7. Max pitch - это максимальная частота из спектра, насколько я понимаю - разложил БПФ слова "Жопа", нашёл её (причём приблизительно, точных частот он тебе не найдёт). Что дальше?

Так же и по остальным пунктам.

По-моему это сложный проект, не знаю ни одного качественного решения. Есть например такое
http://www.shazam.com/

- на сервере хранятся "слепки" (soundprint) музыки т.е. примерно как у тебя - характеристики частот, пауз, скачков громкости и пр. Можно мобилу к радио поднести, сервис с микрофона считает песню в плохом качестве но сможет в своей базе найти по слепку.

Кратко о технологии http://en.wikipedia.org/wiki/Acoustic_fingerprint

Чтонить из этой области надо смотреть. Но это к жабе отношения не имеет.
22 мар 12, 17:39    [12297293]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
grasoff.net
Member

Откуда: samoilovo.org
Сообщений: 8653
http://linux-sound.org/dsp.html
http://miracle.otago.ac.nz/tartini/

ну и тут ещё можно что-то спрашивать )

JTransforms, кстати, да - хороша )
22 мар 12, 19:56    [12298031]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
x1ca4064
Member

Откуда:
Сообщений: 1137
etnos
1. амплитуда,
2. частота,
3. Duration in seconds
4. Mean pitch
5. Std dev pitch
6. Min pitch
7. Max pitch
8. Nr of pulses
9. Nr of period
10. Mean for one period
11. Std dev for one period
12. Fraction of unvoice frames
13. Nr of voice break
14. Procent of voice break


Попробуйте, для начала, перевести названия этих параметров на русский.

ИМХО, конечно, но мне кажется, что большинство этих параметров вычисляются во временном домене, а не в частотном. Хотя некоторые (Mean pitch - средняя интенсивность?) можно вычислять в обоих доменах
22 мар 12, 20:32    [12298164]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
etnos
Member

Откуда:
Сообщений: 12
по этому описанию en.wikipedia.org/wiki/Pitch_(music) pitch рассчитывается с помощью частоты. по этому в списке нужных характеристик присутствует частота.

в зависимости от силы воздействия эмоции (насколько человек может прочувствовать эмоцию) mean pitch изменяется в приделах 2% - 7% система которую я пишу как раз и должна улавливать это изменение или отсутствие изменений, что также важно.



private float[] spectrumAnalyz(float[] spectr) {
float Re;
float Im;
float[] spectruData = spectr;
float[] mySpectrum = new float[(spectruData.length / 2) - 1];
for (int i = 1, j = 0; i < spectruData.length / 2; i++, j++) {
Re = spectruData[2 * i];
Im = spectruData[2 * i + 1];
mySpectrum[j] = (float) Math.sqrt(Re * Re + Im * Im);
}
return mySpectrum;
}

собственно этот метод принимает на вход массив который вернул алгоритм FFT. хочу спросить у тех, кто работал раньше с FFT, это правильная формула для нахождения спектра частот ? ведь если у меня будут частоты, то я смогу найти хотя бы pitch
23 мар 12, 02:26    [12299178]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
oneHalf
Member

Откуда: Калининград
Сообщений: 307
Начинай с теории - т.к. у тебя каша в голове - задай себе простой вопрос - зачем для своего анализа ты используешь преобразование Фурье? Что оно тебе в твоем случае дает такого, чего не даст сигнал во временном пространстве?
После этого - если все же тебе нужно Фурье - тогда читай теорию - там нельзя просто тупо запихивать входные данные - его надо "настраивать" под каждое преобразование - zeros padding, размер окна, чтоб не пропустить частоты и увидеть динамику спектра.
23 мар 12, 10:22    [12299949]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
etnos
по этому описанию en.wikipedia.org/wiki/Pitch_(music) pitch рассчитывается с помощью частоты. по этому в списке нужных характеристик присутствует частота.

в зависимости от силы воздействия эмоции (насколько человек может прочувствовать эмоцию) mean pitch изменяется в приделах 2% - 7% система которую я пишу как раз и должна улавливать это изменение или отсутствие изменений, что также важно.



private float[] spectrumAnalyz(float[] spectr) {
float Re;
float Im;
float[] spectruData = spectr;
float[] mySpectrum = new float[(spectruData.length / 2) - 1];
for (int i = 1, j = 0; i < spectruData.length / 2; i++, j++) {
Re = spectruData[2 * i];
Im = spectruData[2 * i + 1];
mySpectrum[j] = (float) Math.sqrt(Re * Re + Im * Im);
}
return mySpectrum;
}

собственно этот метод принимает на вход массив который вернул алгоритм FFT. хочу спросить у тех, кто работал раньше с FFT, это правильная формула для нахождения спектра частот ? ведь если у меня будут частоты, то я смогу найти хотя бы pitch


Это не нахождение спектра частот. Это преобразование массива комплексных чисел в массив обычных. БПФ вычисляется по мнимым (комплексным числам) и некоторые реализации алгоритма их в комплексном виде возвращают.

Само БПФ не даёт расклада по частотам. Оно даёт приблизительный ответ на вопросы типа "сколько частот в оцифрованном куске примерно равных 100Гц +-10Гц". Даже для волн одинаковой частоты но разных по форме (квадратные и синусоидальные) БПФ вернёт разный массив данных.

Описанная тобой задача сложна, без теории заниматься ей нет смысла. Прочитай по ссылкам выше. Ближе всего к задача тема AcousticFingerPrint (SoundPrint).
23 мар 12, 11:15    [12300407]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
etnos
Member

Откуда:
Сообщений: 12
ок, спасибо большое! буду читать теорию
23 мар 12, 12:14    [12300931]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
recvezitor
Member

Откуда: Владивосток
Сообщений: 419
1024
Это не нахождение спектра частот. Это преобразование массива комплексных чисел в массив обычных. БПФ вычисляется по мнимым (комплексным числам) и некоторые реализации алгоритма их в комплексном виде возвращают.

Само БПФ не даёт расклада по частотам. Оно даёт приблизительный ответ на вопросы типа "сколько частот в оцифрованном куске примерно равных 100Гц +-10Гц". Даже для волн одинаковой частоты но разных по форме (квадратные и синусоидальные) БПФ вернёт разный массив данных.

Описанная тобой задача сложна, без теории заниматься ей нет смысла. Прочитай по ссылкам выше. Ближе всего к задача тема AcousticFingerPrint (SoundPrint).


это нахождение спектра частот при условии что массив spectruData содержит данные полученные после применения БПФ к исходному сигналу, обычный амплитудный спектр. БПФ дает распределение по частотам, нафиг оно таогда вообще нужно. Другой вопрос, что работает он в предположении бесконечных гармонических колебаний. Но есть куча всего что обходит эти ограничения для дискретного конечного сигнала - единственный вариант который можно преобразовать с помощью цифровых методов обработки.
Я бы посоветовал найти матлаб крякнутый, там всего много. Даже слишком много, но там есть по карйней мере правильно работающие алгоритмы и местами даже теория в документации есть.
Была у меня книжечка где оооочень подробно и на пальцах объясняется что к чему, но найти пока не могу
24 мар 12, 04:07    [12305551]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
это именно преоразование комплексных чисел в обычные.

БПФ не даёт точное распределение по частотам, как я говорил, даже для волн одинаковой частоты но разных по форме (квадратные и синусоидальные) БПФ вернёт разный массив данных. Пользуются им от того что ничего лучше пока не придумано.

Речь это не один сигнал, это набор частот. Восстановить набор частот по конечно сумме частот невозможно (типа по цифре 100 догадаться что она является суммой 50+50 или 60+30+10). Это, условно, можно решить перебором и статистическим анализом.

Книжек много разных но сама поставленная задача сложна. Не знаю ни одной качественной реализации подобного.
24 мар 12, 10:36    [12305761]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
recvezitor
Member

Откуда: Владивосток
Сообщений: 419
посмотри внимательно чувак. Что есть преобразование коплексных чисел в обычные? Да там разделяются массив состоящий из реальных и мнимых частей на реальный массив и мнимый, потмоу что в яве нет встроенного комплексного типа, но на следующую формулу посмотри. Это спектр либо мощности либо амплитуды (сейчас не могу точно сказать).
Про книжку я имел ввиду именно что такое БПФ, потмоу что явно понимания нет. Про распознование речи естественно я ничего не говорил. Слишком сложное понятие, но параметры которые хочет автор весьма стандартные и вычисляются через БПФ или производные. Но перечисленные парапаметры применимы к стационарным сигналам. Например к речи и любому более менее сложному сигналу не применимо понятие частота и амплиутда. Говорят обычно об оценке параметров, обычно энергетические характеристики такие как усредненныая амплитуда, SEL, SPL. Нестационарные процессы боее сложны и да там вохможно нужны вейвлет преобразования.
автор
Речь это не один сигнал, это набор частот.

ты путаешься в терминологии. Нет речь это один сигнал, если под сигналом подразумевать временную развертку выбранного интервала речи. Но да, там дохрена частот.
24 мар 12, 18:49    [12307305]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
recvezitor
посмотри внимательно чувак. Что есть преобразование коплексных чисел в обычные? Да там разделяются массив состоящий из реальных и мнимых частей на реальный массив и мнимый, потмоу что в яве нет встроенного комплексного типа, но на следующую формулу посмотри. Это спектр либо мощности либо амплитуды (сейчас не могу точно сказать).


если не можешь точно сказать то зачем лезешь спорить. Чувак.
25 мар 12, 00:18    [12308725]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
recvezitor
Member

Откуда: Владивосток
Сообщений: 419
чувак потому что там разница в наличии и отсутвтвия корня и нормировки, я не помню просто уже. Но факт на лицо что там спектр, а не тот бред
автор
это именно преоразование комплексных чисел в обычные
, я с этим работал, правда пол года назад уже, так что я шарю поверь мне.
автор
БПФ вычисляется по мнимым
это вообще лол
25 мар 12, 02:57    [12309049]     Ответить | Цитировать Сообщить модератору
 Re: Анализ звука алгоритмом FFT  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
recvezitor
чувак потому что там разница в наличии и отсутвтвия корня и нормировки, я не помню просто уже. Но факт на лицо что там спектр, а не тот бред
автор
это именно преоразование комплексных чисел в обычные
, я с этим работал, правда пол года назад уже, так что я шарю поверь мне.
автор
БПФ вычисляется по мнимым
это вообще лол


думаю что не шаришь. В противном случае ты бы смог подсказать топикстартеру что делать в его случае.
25 мар 12, 11:43    [12309397]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Java Ответить