Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/54: Рейтинг темы: голосов - 54, средняя оценка - 4.65
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350

NAudio Как с помощью этой библиотеки работать c mp3 файлами?

08.04.2011, 20:04. Показов 11097. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как с помощью этой библиотеки работать c mp3 файлами? получаю фреймы с данными RawData, так
C#
1
2
3
4
Mp3FileReader reader = new Mp3FileReader("G:\\1.mp3");                
Mp3Frame frame;
while ((frame = reader.ReadNextFrame()) != null)
{}
Каждый фрейм хранит массив байт RawData, как из этих фреймов с массивами байт получить массив частот(или отсчетов)(с плавающей точкой или комплексных чисел - ведь в naudio есть классы для комплексных чисел, ноя не где не нашол как перегнать ацдио файл в массив этих чисел) всего mp3?
Может ли ктонибудь поделиться ссылкой - как использовать методы FFT библиотеки NAudio?

Добавлено через 46 минут
А чтобы например сравнить звук с микрофона с темже mp3, какими форматом должен обладать файл? Тоесть какова должна быть его частота, биты, каналов? И нужно ли проводить какую нибудь нормализацию исходных данных и микрофонных?
Собираюсь использовать следующюю схему сравнения:
1) для исходника - Массив отсчетов->БПФ->MFCC
2)для микрофонных данных - Массив отсчетов->БПФ->И также MFCC
Потом через TDW их стравнить. Правильно ли я понял алгоритм?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2011, 20:04
Ответы с готовыми решениями:

Как работать с текстовыми файлами с помощью VBScript в ASP?
Народ,киньте плизз подходящую ссылку,где бы толково объяснялось,как работать с текстовыми файлами с помощью VBScript в ASP,в первую очередь...

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

Бывает ли функция, с помощью которой можно работать со всеми файлами определённого формата?
Бывает ли функция с помощью которой можно работать со всеми файлами определёного формата ?

13
87 / 85 / 10
Регистрация: 04.04.2011
Сообщений: 221
08.04.2011, 20:05
http://www.codeproject.com/KB/... sharp.aspx

А еще, говорят полезно освоить такой сложный инструмент, как Гугл - в работе очень помогает

http://naudio.codeplex.com/documentation
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
08.04.2011, 20:17
Цитата Сообщение от nuke4303 Посмотреть сообщение
Правильно ли я понял алгоритм?
Да, все правильно, теперь попробуй все это осуществи.
(Вместо TDW можно использовать СММ и нейронные сети, а вместо БПФ вейвлет-преобразования)
0
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
08.04.2011, 20:33  [ТС]
Цитата Сообщение от shapod Посмотреть сообщение
А еще, говорят полезно освоить такой сложный инструмент, как Гугл
Был по вашей второй ссылке и в гуле ковырялся, от туда и базовые знания в обработке звука взял..насчет naudio на сайте проекта только базовые вещи
А что насчет нормализации, ее нужно делать? 16 битные данные нужно использовать, один канал, насчет частоты не знаю, правльно понял? или можно с двухканальными данными работать(объеденив их или используя один какойнить канал)
Цитата Сообщение от Eugene22 Посмотреть сообщение
Вместо TDW можно использовать СММ и нейронные сети, а вместо БПФ вейвлет-преобразования
А что из этого быстрей работает? Я планирую расчетную часть поместить в дллки на с++ для ускорения работы
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
08.04.2011, 20:43
Не знаю, у каждого метода есть плюсы и минусы, причем в эту цепочку добавляют различные преобразования - типа окна Хемминга или Ханна, логарифмическое преобразование, нормализация и т.д., вместо MFCC иногда используют LPC, плюс используют еще нейронные сети, а если брать пофонемное сравнение - то есть методы, где все предыдущее вообще не употребляется. Вообщем однозначно правильных алгоритмов нет - полный простор для творчества.
Я уж не говорю, что есть куча реализаций для того же БПФ - а какой оптимальный - неизвестно - это надо испытывать, пробовать.
1
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
08.04.2011, 20:50  [ТС]
Цитата Сообщение от Eugene22 Посмотреть сообщение
Хемминга или Ханна, логарифмическое преобразование, нормализация
Эти методы применяются к массиву частот(после БПФ) или к массиву отсчетов?
А можно ли mp3 файл преобразовать в wavestream с 1 каналом и потом использовать его, а то непонятно как работать с фреймами и joinstereo mp3 файла, или это уже извращением является?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
08.04.2011, 21:00
окно Хемминга/Ханна используются над массивом отсчетов - нередко одновременно с БПФ, нормализация вроде тоже над массивом отсчетов, но не уверен. логарифмич. преобразование вроде уже после БПФ. Почитай спец. лит-ру.
Только я не знаю, насколько эффективен будет анализ данных из mp3, с wav и с потоком от микрофона вроде проще.
0
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
08.04.2011, 21:05  [ТС]
в исходниках примера Naudio есть строки переводящие из массива байт во float
C#
1
2
3
4
5
6
7
8
9
byte[] buffer = e.Buffer;           
 
            // now report each sample if necessary
            for (int index = 0; index < e.BytesRecorded; index += 2)
            {
                short sample = (short)((buffer[index + 1] << 8) | buffer[index + 0]);
                /* short sample2 = BitConverter.ToInt16(buffer, index);
                Debug.Assert(sample == sample2, "Oops"); */
                float sample32 = sample / 32768f;
не совсем понятно что делается в строке ((buffer[index + 1] << 8) | buffer[index + 0]); и float sample32 = sample / 32768f; ?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
08.04.2011, 21:10
Программа получает с микрофона каждые 10 мс буфер 1600 байт и в этом коде из двух байт создается один экземпляр short, затем посредством деления он переводится во float
0
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
08.04.2011, 21:39  [ТС]
А откуда вязлось число 32768f? Чтобы сравнить тодже например файл wav размера 20мб и длительностью 3 мин, с куском данных( 10 сек) с микрофона, как нужно обрабатывать файл аудио(тоесть его весь через фурье пропускать, а потом сравнивать с куском двигаясь с шагом, или както подругому это делают)?

Добавлено через 24 минуты
Цитата Сообщение от Eugene22 Посмотреть сообщение
переводится во float
Я так понимаю, как раз из этого получается массив отсчетов?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
08.04.2011, 21:51
nuke4303, 32768 - это максимальное значение short, поэтому его используют для получения float.
По обработке не подскажу - БПФ не приходилось делать. Но в бпф могут использоваться буферы кратностью два - то есть весь файл не засунуть. Лучше обратись к первоисточникам - погугли FFT, MFCC и т.д.
0
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
08.04.2011, 21:58  [ТС]
Цитата Сообщение от Eugene22 Посмотреть сообщение
32768 - это максимальное значение short,
Чет не додумался я)
Цитата Сообщение от Eugene22 Посмотреть сообщение
Но в бпф могут использоваться буферы кратностью два
Тоесть четные? или только 1024, 2048 итд? Если четны почему нельзя просто убрать первый или последний элемент в буфере всего файла перед передачей в фурье
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
08.04.2011, 22:03
Ну да типа 1024 или 8192. Почему так - не помню, как то в теории не особо разбирался
1
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
09.04.2011, 20:06  [ТС]
а может ктонибудь подсказать\дать ссылку где можно почитать хорошую литературу про алгоритмы MFCC DTW др

Добавлено через 2 часа 58 минут
Аесли сипользовать FFTW, то туда можно передать массив любого размера?

Добавлено через 18 часов 28 минут
А если имееются музыкальный файл, и файл записанный с микрофона(с куском музыки). Какими способами можно сравнить эти файлы, для опреленения входит ли фрагмент с микрофона в мцзыкальный файл. Часто используют связку типа - Массив отсчетов->БПФ->MFCC->DTW(нейросеть) для двух файлов. Но в основном исходя из форумов, эту связку используют для распознавания голоса. Приминима ли эта связка преобразоваий к музыкальным файлам? И каким образом обрабатывать музыкальные файла длительностью напрмиер 4минуты и сравнивать их с куском микрофонным например 10 секундным?, если создавать эталон по музыкальному файлу весь его разложив в фурье и тд, то он выйдет достаточно большим.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2011, 20:06
Помогаю со студенческими работами здесь

Добавление библиотеки NAudio в UWP проект
Всем доброго времени суток! Читал примеры про библиотеку NAudio. Хотел попробовать реализовать запись звука добавил библиотеку из...

Как проиграть mp3 с помощью VC++?
I don't know how to play mp3 sound in vc6++ please help me???!!!

Запись звука в byte[] с помощью NAudio
Вот код который пишет в файл звук, Ребят как записать звук только в переменную byte И если можно то как оптимизировать доступ к ней ...

Воспроизведение Wave файла с помощью NAudio
Доброго время суток. Помогите пожалуйста. Файл прикреплён. Не могу понять как исправить данную ошибку. в строке ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru