Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Захват и обработка звука с микрофона 
:(
    Опции темы
david08
Дата 13.2.2014, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.2.2014

Репутация: нет
Всего: нет



Доброго времени суток!

Подскажите пожалуйста, как снимать данные с потока микрофона для последующей обработки? Винда или Линукс не важно, интересует дальнейшее разложение сигнала в спектр и построение чего-то типа спектр от времени. Примерно представляю, что нужно пользоваться быстрым преобразованием Фурье, но если можете помочь разобраться как это реализуется, был бы очень признателен.
PM MAIL   Вверх
Alexeis
Дата 13.2.2014, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 5
Всего: 459



Цитата(david08 @  13.2.2014,  03:29 Найти цитируемый пост)
интересует дальнейшее разложение сигнала в спектр и построение чего-то типа спектр от времени.

  Спектр от времени получают при помощи оконного перобразования Фурье. Дело в том, что если для анализа сигнала просто вырезать фрагмент сигнала, то сама врезка превращает сигнал из непрерывного в импульсный, а как известно, импульс имеет широкий спектр не смотря на то, что он может иметь заполнение одной частоты. С точки зрения преобразования Фурье там добавляется только один множитель. А так в результате БПФ получается массив комплексных чисел F=X(f)+i*Y(f) . Соответственно амплитудой гармоники будет sqrt(x*x+y*y), впрочем формул и примеров алгоритмов завались (даже в той же википедии есть тыц). Задал массив амплитуд сингала получил спектр. 
  Что касается записи звука с микрофона, то тема достаточно избитая. Например тыц


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
borisbn
Дата 13.2.2014, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Скачиваешь fftw, вызываешь fftw_execute, из полученного массива считаешь спектр мощности ( powSpectr[ i ] = complexSpectr[ i ][ 0 ] * complexSpectr[ i ][ 0 ] + complexSpectr[ i ][ 1 ] * complexSpectr[ i ][ 1 ] ), затем рассчитываешь логарифмический спектр ( logSpectr[ i ] = 10 * log10( powSpectr[ i ] ) ), затем повторяешь всё то же самое для следующей по времени выборки сигнала.
Затем рисуешь такой график: по оси X у тебя индекс массива logSpectr, по оси Y - время ( или просто номер выборки ), а цвет каждой точки берётся из таблицы цветов по индексу, равному logSpectr[ i ], т.е. как-то так:
color = colorTable[ logSpectr[ i ] ];


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
borisbn
Дата 13.2.2014, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Должен получиться вот такой "водопад" (нижняя половина рисунка)
user posted image


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.