S
S
Sratimon12016-12-02 00:26:57
Qt
Sratimon1, 2016-12-02 00:26:57

Working with C++ sound how?

Hello. I'm interested in what sound is, for example, a picture is a set of pixels located at coordinates and consisting of RGB (255,255,255 is white), video is a set of images, and what is sound?
What are the libraries to work with it?
And where can I read more about it? (so to speak for stupid).
I know you can somehow work with the sound of the standard fstream library like. But how ? Sample code if possible.
I came across an example with bitwise reading of a file, but there was some kind of nonsense in the console when outputting .
What do I want to end up with. Turn an audio track into a graph, learn how to work with sound, clean it up, try to teach a neural network to recognize some words.
I work in Code Block mingw or Qt Creator language as written above C++.
Skills: procedural programming for 4, OOP for 3 with a minus, English at the level of an approximate understanding of the help with a little help from google transliteration (I almost don't know).

Answer the question

In order to leave comments, you need to log in

3 answer(s)
J
jcmvbkbc, 2016-12-02
@Sratimon1

what is sound

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

T
tschin, 2016-12-02
@tschin

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

Александр Пожарский, 2016-12-02
@alex4321

"а что из себя представляет звук"
В "математическом" смысле? Функция вида 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 и прочее. Но, насколько я знаю - значения в одной схеме можно привести к другой, да.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question