1 / 1 / 1
Регистрация: 31.10.2021
Сообщений: 12
|
|
1 | |
Амплитудно-временная, частотно-временная характеристика mp331.10.2021, 20:28. Показов 1945. Ответов 14
Всех приветствую, есть необходимость, сделать некоторое подобие «детектора шума». На чистом, или почти cmd, вставки на ps или vbs приветствуются, главное без установки софта, только портативные утилиты.
Задача: Найти, или написать вспомогательный инструмент, с которым можно работать из командной строки, который в качестве аргумента принимает: 1. Путь до mp3 файла. 2. Отметку времени mp3 файла, можно без проверки длительности аудио. Выводит: 1. Уровень амплитуды в любой относительной величине, децибелы, проценты, микровольты на метр. 2. Частота синусоидального сигнала на данной отметки времени. (Входной аргумент) Как вы понимаете, проблем с написанием cmd скриптов у меня нет (Да и сам я с высшим радиотехническим образованием), есть лишь потребность в конкретном подобном инструменте. Может быть, кто-то знает, или работал с этим. Устройства в связке с детектором шума и Arduino не предлагать, программы с графическим выводом тоже. Только программная реализация.
0
|
31.10.2021, 20:28 | |
Ответы с готовыми решениями:
14
Временная группа Амплитудно - фазовая частотная характеристика Амплитудно-частотная характеристика осциллятора Логарифмическая амплитудно-частотная характеристика |
1 / 1 / 1
Регистрация: 31.10.2021
Сообщений: 12
|
||||||
01.11.2021, 06:42 [ТС] | 3 | |||||
alpap, Спасибо за ответ, по первой ссылке, возможно, эта утилита и работает из командной строки, однако, нормализация – это не совсем то, что нужно. Ведь если выровнять амплитуду аудио файла, то мы не сможем выделить резкие естественные скачки, для выделения резкого изменения уровня звука. («Детектор шума»)
По второй ссылке, мало знаком с этим пакетом программ, насколько понял, используя этот инструмент можно лишь теоретически представить модель сигнала, не подходит, мы же работаем на практике, и уже имеем записанный аудио файл. Также не нашел способы передачи значений в cmd обратно, возможно можно заморочиться с выводом кода ошибки. Также не имею представления, каким образом можно импортировать параметры сигнала из mp3 или любого другого формата, да, говорим о matlab. Для наглядности представляю волшебную «функцию», которая принимает на вход аудио файл, время, и выводит частоту, и уровень амплитуды:
Добавлено через 8 минут Кстати, проблем с «высчитыванием» дробных чисел на cmd нет, для ленивых можно даже использовать вставку на vbs, но тогда еще придется разбивать вывод на подстроки, чтобы отделить целую от дробной части. И да, это не очередное задание из универа, как тут бывает, а мой личный интерес.
0
|
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
||||||
02.11.2021, 00:23 | 4 | |||||
если переписать код так, то можно увидеть что никакой он не волшебный, написан на коленке и причем безграмотно во всех смыслах и никакую ни частоту ни амплитуду он естественно не показывает.
0
|
1 / 1 / 1
Регистрация: 31.10.2021
Сообщений: 12
|
|
02.11.2021, 10:44 [ТС] | 5 |
alpap, Здравствуйте, во-первых, нигде не заявлялось что это и есть решение моей задачи, поэтому код не выполняет заданную функцию, а лишь визуализирует её.
При цитировании, вы вырвали из контекста мои слова, придется вас поправить, простите: То есть этот код наглядно показывает, как должна работать искомая утилита, так же дополняет изначальную задачу мелкими деталями, такими как: 1. Аудиофайл уже есть и находится в распоряжении интерпретатора 2. Требуется постоянный вывод для каждой секунды (Частота и амплитуда) 3. Синтаксис входных аргументов искомой утилиты. Тут вы совершенно правы, код написан за 15 минут. Готов принять ваши комментарии на счет безграмотности, сразу скажу, что данный код является выдержкой из главного скрипта объёмом в 1300 строк. Где требуется «минимализация» кода, для быстрого ориентирования, если вы про большое количество «И» в коде. Очевидно, что все «функции» могут быть вызваны с разными аргументами, и могут быть использованы для разных процедур, которые в настоящем коде не отражены, если вы про большое количество вызовов call. Думаю, вы можете ошибаться, если не запускали этот код. Специально для вас прикрепил миниатюру. Анализируя ваш код, можно действительно заметить различия, в основном в хорошей читабельности, и отсутствии «лишней» установки рабочей директории, однако на функциональную часть это никак не повлияет. Не по теме: Если вы готовы удариться в философию, то могу вам сразу сказать, что я в курсе, что большое количество вызовов функций, а также постоянная расширенная обработка переменных почти в два раза замедляет работу интерпретатора, однако, причины, по которым мне пришлось пожертвовать читабельностью, моно функцией, обычной обработкой переменных % - я описал выше.
1
|
kumehtar
|
||||||
02.11.2021, 11:04
#6
|
||||||
0
|
02.11.2021, 16:01 | 7 |
Wododip228,
Какое отношение получение технических характеристик аудиофайла имеет к батникам? Вам уже пару раз намекнули, что это не про batch и вообще не про shell скрипты. Святые угодники... Ну не программируют на батниках... это мазохизм. Выучите нормальные ЯП. В них уже и готовые библиотеки для работы с аудипотоками и аудиофайлами будут. И весь код займет 5-10 строк. А на коленке ни вы, никто другой ничего такого не напишет.
1
|
1 / 1 / 1
Регистрация: 31.10.2021
Сообщений: 12
|
|
02.11.2021, 19:15 [ТС] | 8 |
Garry Galler, На самом деле никакого, просто необходимо с помощью сторонних инструментов вывести значения сигнала в переменную интерпретатора.
Дельный совет. Просто большая часть функционала уже реализована в cmd скрипте. Я не рассматриваю cmd/bat скрипты как ЯП в перспективе. Просто хотелось бы «дожать» этот скрипт. В теории можно, по принципу вертикального заполнения через echo пробелами и обозначающими символами, например «*». Но это уже и есть махохизм, о котором вы говорите, истинная необходимость в том, чтобы зафиксировать шум, без каких либо обработок сигнала, и преобразований над ним. Добавлено через 4 минуты Однако, если такой инструмент будет найден, то я попробую в этой теме сделать что-то подобное на чистом batch. Будет интересно.
0
|
02.11.2021, 19:47 | 9 |
Так вы ищите инструмент (ГОТОВУЮ ПРОГРАММУ ДЛЯ АНАЛИЗА АЙДИОФАЙЛА) или что????
Про готовые консольные программы (работу с которым можно будет потом обернуть ничего не значащим батником) нужно спрашивать не в разделе батников, а там где есть темы про обработку аудио. В самом batch нет ни средств чтения бинарных файлов, ни структур данных для хранения байтов, ни математических функций. На VBS или PS, конечно есть (в PS больше, так как там полный доступ к методам из .NET), но в любом случае придется все вычисления писать вручную. Но чтобы это написать, мало сам язык знать - нужно знать предметную область (ну вот как вы с соответствующим образованием).
1
|
1 / 1 / 1
Регистрация: 31.10.2021
Сообщений: 12
|
|
02.11.2021, 20:31 [ТС] | 10 |
Garry Galler,
Да, да, и еще раз да, именно это я и ищу. Вы совершенно правы. У нас на форуме есть соответствующие темы? Вроде бегло пробежался, не нашел. По идее нужно получить средневыпрямленное значение (Взять все положительные полуволны, и вычислить среднее значение между ними) за 1 секунду, ту, которая передается в аргументе, и сосчитать частоту сигнала, за эту же секунду, именно сосчитать, а не вычислить, так как определение частоты через период, и другие косвенные вычисления будут иметь большую погрешность, так как сигнал может быть не симметричным, и не постоянным, но однозначно синусоидальный. Как это программно реализуется на PS и VBS не имею представления, думаете методы .NET это могут? Есть смысл обратиться в эти разделы? (PS и VBS)
0
|
03.11.2021, 00:56 | 11 |
Сообщение было отмечено Wododip228 как решение
Решение
Есть такая очень известная либа - комбайн для работы со звуком - bass.dll, написанная на С++.
Для нее на C# есть обертка bass.NET. https://streletzcoder.ru/osnov... -bass-net/ http://bass.radio42.com/help/ Здесь на форуме в блоге одного товарища есть примеры работы с bass.dll на С++ https://www.cyberforum.ru/blog... g5149.html Судя по примерам она умеет считать амплитуду. Есть ли готовые консольные морды для работы с ней я даже не знаю. Но можно поспрашивать у того же товарища чей блог. Я же в работе со звуком ничего не понимаю, поэтому не могу сказать насколько трудоемко(или нет) написать всю нужную логику без библиотек на тех же С++\C#. Добавлено через 2 минуты Едва ли там есть радиоинженеры... В разделе С++ шансов, думаю, больше :-)
1
|
1 / 1 / 1
Регистрация: 31.10.2021
Сообщений: 12
|
|
03.11.2021, 18:57 [ТС] | 12 |
Garry Galler, Просто хочется сказать вау, это действительно то, что нужно!
В блоге, 10-тый пример, там есть все что нужно, все вышеописанные вычисления. Пожалуй, осталось только впилить эту задумку в консольную морду, добавить ввод аргументов, и консольный вывод.
0
|
1 / 1 / 1
Регистрация: 31.10.2021
Сообщений: 12
|
|||||||
05.11.2021, 18:56 [ТС] | 13 | ||||||
Сообщение было отмечено ildwine как решение
Решение
Если кому интересно, то решил задачу. Не без помощи Garry Galler.
Однако не все задачи остались решенными: Как можно вывести второй поток программы в тело цикла без файлов? В данном случае tmp.txt
0
|
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
||||||
06.11.2021, 02:53 | 14 | |||||
стр49 без, естественно, >tmp.txt помещаете в стр51 вместо tmp.txt и в таких кавычках: '"sox output!sh!.wav -n stat 2"'. По идее должно отработать. (В этой строке delims=пробел лишнее, это и так есть по умолчанию - деление по пробелу, если не изменено)
Кликните здесь для просмотра всего текста
1
|
1 / 1 / 1
Регистрация: 31.10.2021
Сообщений: 12
|
||||||
06.11.2021, 16:08 [ТС] | 15 | |||||
alpap, Не совсем понял вас, всяко разно попробовал, в основном одни вылеты.
Однако, потупив полчаса, пришел в такому коду, вроде работает:
0
|
06.11.2021, 16:08 | |
06.11.2021, 16:08 | |
Помогаю со студенческими работами здесь
15
Амплитудно-частотная характеристика ФНЧ Чебышева Амплитудно-частотная характеристика фильтра верхних частот Временная метка Временная таблица Временная Функция Временная бобмба Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |