Работа со звуком С++ как?

Здравствуйте. Меня интересует что такое звук , к примеру картинка это набор пикселей расположенных по координатам и состоящих из RGB (255,255,255 это белый ) ,видео это набор изображений , а что из себя представляет звук ?
Какие есть библиотеки для работы с ним ?
И где можно почитать об этом подробнее ? (так сказать для тупых).

Знаю можно как то работать со звуком стандартной библиотекой fstream вроде. Но как ? Если можно пример кода.
Я натыкался на пример с побитовым чтением файла но в консоли был какой то бред при выводе .

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

Работаю я в Code Block mingw или Qt Creator язык как и написано выше C++.
Навыки: процедурное программирование на 4, ООП на 3 с минусом , Английский на уровне примерного понимания справки с небольшой помощью гугл транслита (почти не знаю ).
  • Вопрос задан
  • 8708 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
что такое звук

Начало здесь.

картинка это набор пикселей расположенных по координатам и состоящих из RGB (255,255,255 это белый )

1 секунда двухканального звука оцифрованного на 48000 Гц с 16-битной точностью это, например, 48000 пар знаковых 16-битных целых чисел. Если все эти числа равны, то это одна секунда тишины. А если первое число в i-й паре равно 32767 * sin(440 * 2 * Pi * i / 48000), а второе -- 0, то это одна секунда ноты ля первой октавы в левом канале.

Превратить звуковую дорожку в график , научиться работать со звуком , чистить его

Продолжать поиски здесь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@tschin
Sratimon1: По-моему, вы недостаточно понимаете предметную область. Может попробовать гуглить "в лоб"? Например, "распознавание речи С++"? Вот первая ссылка с Яндекса: https://habrahabr.ru/post/226143/ В ней есть ответ на ваш вопрос: что такое звук с точки зрения компьютера. Если коротко, звук с точки зрения компьютера - цифровой сигнал, набор значений амплитуд.
Ответ написан
"а что из себя представляет звук"

В "математическом" смысле? Функция вида amplitude(t) = f(t) :-)

"Стандартное" представление?
- Берем отрезок этого нашего t (например - 1 минуту)
- делим на конечное число моментов : t_i = (1 / f) * i, где t_i - i-й момент времени, i - номер, f - частота дискретизации
- сохраняем значения амплитуд в эти моменты (amplitude_i = amplitude(t_i))
- ну и разумеется - представляем эти значения как n-битоное число (напрнимер - 24 бита).

"Превратить звуковую дорожку в график"
А смотря какой. Если речь о осцилограмме - то просто юзаем значения амплитуд (ну, может - применим какую-нибудь простую функцию к ним. От линейного значения к логарифмическому, например, перейдём). Как минимум - можно ещё представить как спектрограмму (которые часто применяют). Если вкратце - поделить на интервалы, каждый из которых - описывается отдельной функцией, и представить её, например, как сумму синусоид (man преобразование фурье).

"чистить его"
Опять же - ЕМНИП, в основном работаем с амплитудами (условно - вычиаем из зашумленного сигнала amplitude(t) + noise(t) компонент noise(t)) или спектром (да, условно - посчитали спектр, затем занизили/завысили часть частот (т.е. коофициенты у соответсвующих синусоид)) и снова сгенерировали звук. Но - это уже тянет на целую предметную область, так что я бы сперва осилил первую часть сообщения.

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

"RGB"
Не всегда, кстати. Есть же всякие CMYK и прочее. Но, насколько я знаю - значения в одной схеме можно привести к другой, да.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы