Форум программистов, компьютерный форум, киберфорум
Программирование звука
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
2 / 2 / 0
Регистрация: 24.03.2013
Сообщений: 59

Wav-файл(набор значений громкости)

12.01.2019, 20:55. Показов 3634. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В рамках работы возник вопрос, после получения data wav файла, я имею набор из 2 в -8 до 2 в 8.
Для нахождения максимальной громкости, допустим в секунду, мне надо просто складывать значения за секунду, или складывать их по модулю?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2019, 20:55
Ответы с готовыми решениями:

Преобразование списка текстовых значений АЦП в звуковой файл (PCM, WAV, RIFF)
Доброго здравия, кодеры! Я уже лет 20 ни на чём не писал, поэтому прошу помощи уважаемых, возможно за деньги, написать простой конвертор...

Получить массив double значений с использованием mmsystem и записать wav файл
Здравствуйте. Очень нужна помощь. Я никогда не работала с windows библиотеками. Немного разобралась с записью звука и его выводом через...

Написать программу, формирующую по исходному WAV файлу новый WAV файл
Написать программу, формирующую по исходному WAV файлу новый WAV файл, со сглаженным вершинами перегруженных (клипированных) фрагментов....

4
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,304
Записей в блоге: 12
13.01.2019, 20:40
Лучший ответ Сообщение было отмечено aa41014091 как решение

Решение

Цитата Сообщение от aa41014091 Посмотреть сообщение
я имею набор из 2 в -8 до 2 в 8
Не от 2-8, а от -27 (-128) до +27-1 (127), если речь идёт о значениях размером с 1 байт.
Складывать нужно по модулю.

Добавлено через 13 минут
Но это всё же не максимальная громкость как таковая, а пиковое значение.
Причём, если среднее значение окажется не в нуле (оно может быть смещено по факту и иногда значительно), то результат будет некорректный.
К примеру, амплитуда колеблется от -100 до +199, среднее скорее всего будет при этом в районе +50. И тогда пик будет = 150, а не 199.
Но просто взять минимум и максимум и найти среднее – это неверно, среднее значение рассчитывается так:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\mu = \frac{1}{N}\sum_{i=0}^{N-1}x_{i}.
Здесь N - кол-во отсчётов, xi - значение отсчёта (как есть, неабсолютное; i = от 0 до N-1).
Потом вычитаем из пика https://www.cyberforum.ru/cgi-bin/latex.cgi?\mu, а затем приводим к абсолютному значению (для примера выше: -100-50 = -150, 199-50=149, макс.абс. = 150).

Но вообще, для получения громкости я бы вычислял не пик, а RMS (среднеквадратическое отклонение):
https://www.cyberforum.ru/cgi-bin/latex.cgi?\sigma = \sqrt{\frac{1}{N-1}\sum_{i=0}^{N-1}\left(x_{i}-\mu  \right)^{2}}
(https://www.cyberforum.ru/cgi-bin/latex.cgi?\mu лучше вычислять это значение не как целое, а как вещественное число)
Так будет правильнее.

Естественно, чем больше N, тем точнее результат. Одна секунда - нормально, 10 отсчётов - не годится.

Добавлено через 6 минут
N-1 в знаменателе (под корнем) - это не ошибка, для этого есть основания (компенсация статистических погрешностей).

Добавлено через 10 минут
Ещё одна формула (чтобы 2 раза по массиву не бегать):
https://www.cyberforum.ru/cgi-bin/latex.cgi?\sigma = \sqrt{\frac{1}{N-1}\left[\sum_{i=0}^{N-1}x_{i}^{2} - \frac{1}{N}\left(\sum_{i=0}^{N-1}x_{i} \right)^{2} \right]}
или по простому:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\sigma = \sqrt{\frac{1}{N-1}\left[SqrSum - \frac{Sum^{2}}{N} \right]}
где SqrSum - сумма квадратов отсчётов, а Sum - просто сумма отсчётов.


Красная линия на рисунке - это ноль. Сиреневая - среднее значение (т.е. как бы положение реального нуля). Разница между ними - это https://www.cyberforum.ru/cgi-bin/latex.cgi?\mu.
Пик (жёлтая линия) не зависит от остальных отсчётов волны. И если записана тишина и один громкий щелчок, мы получим завышенное значение "громкости".
RMS (зелёная линия) получается исходя из всех значений. Если будет везде громко, то и RMS будет большим. Если будет тихо, то вне зависимости от случайных всплесков, результат будет тоже низким. Это более объективная оценка громкости.
1
2 / 2 / 0
Регистрация: 24.03.2013
Сообщений: 59
31.03.2019, 16:24  [ТС]
Хм, допустим я нахожу RMS всей звуковой дорожки(допустим, продолжительностью 1 час == 3600 сек == 3600* 44100 значений), и мне надо находить те секунды, где особенно громкая. Далее мне стоит находить значения RMS за секунду(1-10), а затем сравнить с общим RMSом?

Добавлено через 24 секунды
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,304
Записей в блоге: 12
31.03.2019, 21:21
Цитата Сообщение от aa41014091 Посмотреть сообщение
мне надо находить те секунды, где особенно громкая
Что значит особенно "громкая"? Если громче среднего, тогда да, получается так. Только таких секунд, вероятно, будет полфайла.

Как вариант, можно просчитать каждую секунду (я бы на самом деле сделал с нахлёстом... хотя смотря что за задача у вас, не совсем понятно пока что, для чего это всё), затем отсортировать в порядке уменьшения (сохранив связь между RMS и номером секунды). И дальше уже взять столько, сколько нужно (5% от всего файла; громче среднего арифметического между максимумом и средним RMS; громче 80% от максимума и т.д. – в зависимости от задачи).

Понятие "особенно громкая" слишком расплывчатое. Особенно в сравнении с чем? Для кого/чего? И т.д.
0
2 / 2 / 0
Регистрация: 24.03.2013
Сообщений: 59
01.04.2019, 02:01  [ТС]
Цитата Сообщение от Jin X Посмотреть сообщение
Что значит особенно "громкая"? Если громче среднего, тогда да, получается так. Только таких секунд, вероятно, будет полфайла.

Как вариант, можно просчитать каждую секунду (я бы на самом деле сделал с нахлёстом... хотя смотря что за задача у вас, не совсем понятно пока что, для чего это всё), затем отсортировать в порядке уменьшения (сохранив связь между RMS и номером секунды). И дальше уже взять столько, сколько нужно (5% от всего файла; громче среднего арифметического между максимумом и средним RMS; громче 80% от максимума и т.д. – в зависимости от задачи).

Понятие "особенно громкая" слишком расплывчатое. Особенно в сравнении с чем? Для кого/чего? И т.д.
задача простая. поиск аудиорекламы по громкости дорожки.

с использованием только среднего значения, я находил его для каждой секунду, и после брал 2% значений.
дальше создавал интервалы(условно, если в этих 2% были близкие друг к другу), то я их объединял.

эффективность метода в районе 15% получилась.

Теперь я вернулся к этой задаче и пробую увеличить эффективность каким-либо образом)

Добавлено через 21 минуту
попробовал RMS, значение от среднего по итоге на 10 отличается, что на таком диапазоне ничего не дает.
поэксперементирую, конечно, и дальше уже для секунд и тд
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2019, 02:01
Помогаю со студенческими работами здесь

Создать wav файл имея raw файл с данными
Всем хорошего настроения! Пишу программу для обработки аudio данных, и есть необходимость преобразовывать данные wav - чистые данные -...

Можно ли сделать регулятор громкости полностью синхронным с системным регулятором громкости
Ну во первых всех С Новым Годом!!! и всех благ. Теперь вопрос можно ли сделать регулятор громкости полностью синхронным с системным...

Преобразование .wav файла в массив значений
Всем привет. Столкнулся с такой задачей: есть .wav файл с неким ритмом, необходимо преобразовать его в массив байтов. Вот есть код, но...

Самый простой вариант считать массив значений из wav?
привет, ребят. необходимо получить массив значений из файла wav для последующего преобразования фурье. объясните поподробнее, что есть эти...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru