Читать wav-file
-
- beginner
- Сообщения: 19
- Зарегистрирован: 05 ноя 2013, 19:42
- Версия LabVIEW: 2012
- Откуда: Санкт-Петербург
- Контактная информация:
Читать wav-file
Здравствуйте!
Не судите строго за вопрос, похожий обсуждался вот здесь http://www.labviewportal.org/viewtopic. ... 0%B9%D0%BB
Я там задавал вопрос, но автор ветки не ответил.
Моя задача - читать wav файл, где-то минутной длины, выводить данные на гониометр, а так же в два текстовых файла, для осей Х и У. Сейчас это не работает так как надо по причине того, что в определенный момент не хватает памяти. Понимаю, что делаю что-то не так, но опыта пока очень мало!
Так же, может кто-либо натолкнуть на мысль, как это можно вывести на Distribution Graph или Polar Plot? Объясню конечную задачу: на микрофоны искусственной головы с акустических систем приходит сигнал, мы его записываем. Так же мы имеем эталонный сигнал, который собственно и воспроизводим при записи. Задача - сравнить пространственную картину с помощью гониометра. Точки при воспроизведении попадают в одни области чаще, чем в другие. Я хочу разбить диаграмму на сектора и закрашивать их сильнее или слабее в момент попадания в них точек. Далее сравнить сектора эталона и испытуемого сигнала.
Мой товарищ по аспирантуре порекомендовал мне попробовать LabView. Раньше пытался совместно с программистом на С++ это выписать, могу показать исходный код.
Помогите, пожалуйста!
Не судите строго за вопрос, похожий обсуждался вот здесь http://www.labviewportal.org/viewtopic. ... 0%B9%D0%BB
Я там задавал вопрос, но автор ветки не ответил.
Моя задача - читать wav файл, где-то минутной длины, выводить данные на гониометр, а так же в два текстовых файла, для осей Х и У. Сейчас это не работает так как надо по причине того, что в определенный момент не хватает памяти. Понимаю, что делаю что-то не так, но опыта пока очень мало!
Так же, может кто-либо натолкнуть на мысль, как это можно вывести на Distribution Graph или Polar Plot? Объясню конечную задачу: на микрофоны искусственной головы с акустических систем приходит сигнал, мы его записываем. Так же мы имеем эталонный сигнал, который собственно и воспроизводим при записи. Задача - сравнить пространственную картину с помощью гониометра. Точки при воспроизведении попадают в одни области чаще, чем в другие. Я хочу разбить диаграмму на сектора и закрашивать их сильнее или слабее в момент попадания в них точек. Далее сравнить сектора эталона и испытуемого сигнала.
Мой товарищ по аспирантуре порекомендовал мне попробовать LabView. Раньше пытался совместно с программистом на С++ это выписать, могу показать исходный код.
Помогите, пожалуйста!
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Читать wav-file
По поводу обработки, ничего сказать не могу, так как даже ее идеи не смог уловить.mikhailefimov писал(а):Моя задача - читать wav файл, где-то минутной длины, выводить данные на гониометр, а так же в два текстовых файла, для осей Х и У. Сейчас это не работает так как надо по причине того, что в определенный момент не хватает памяти. Понимаю, что делаю что-то не так, но опыта пока очень мало!
Что касается загрузки данных, то все должно работать.
У Вас в цикле чтение, непонятно для чего. Программа не доделана, по этому не могу запустить, но переполнение памяти наверняка из-за этого.
Попробуйте для начала просто загрузить данные: А уже потом наворачивать обработку.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Читать wav-file
mikhailefimov
А почему вы в цикле For закрываете refnum на wav-файл? У вас же на следующей итерации ссылка будет недействительна. Закрывайте, как закончите работать с файлом. Также, если со стандартными ничего не получится, есть OpenG Large File.
А почему вы в цикле For закрываете refnum на wav-файл? У вас же на следующей итерации ссылка будет недействительна. Закрывайте, как закончите работать с файлом. Также, если со стандартными ничего не получится, есть OpenG Large File.
-
- beginner
- Сообщения: 19
- Зарегистрирован: 05 ноя 2013, 19:42
- Версия LabVIEW: 2012
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Читать wav-file
IvanLis, спасибо за ответ. Загрузил Ваш вариант, но у меня на минутном файле зависло...
dadreamer, я пробовал разные варианты, но не могу пока понять, где мне входить в цикл, где выходить. С риалтаймом все получилось в лучшем виде . То есть он слушает, что в него сыграли, потом пишет в файлы. А вот как только я перешел к открытию файла - тут и началось... 10 сек без проблем, больше - уже очень медленно.
dadreamer, я пробовал разные варианты, но не могу пока понять, где мне входить в цикл, где выходить. С риалтаймом все получилось в лучшем виде . То есть он слушает, что в него сыграли, потом пишет в файлы. А вот как только я перешел к открытию файла - тут и началось... 10 сек без проблем, больше - уже очень медленно.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Читать wav-file
А какое значение частоты дискретизации записанного сигнала?mikhailefimov писал(а):IvanLis, спасибо за ответ. Загрузил Ваш вариант, но у меня на минутном файле зависло...
Закиньте минутный файлик, я у себя попробую..
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 19
- Зарегистрирован: 05 ноя 2013, 19:42
- Версия LabVIEW: 2012
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Читать wav-file
IvanLis, 44100/16 положил на Ядиск http://yadi.sk/d/hXCKQKYhEWdYm сюда не грузит, говорит большой файл
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Читать wav-file
44100*60*2 = 5292000 отсчетов, комп по идее должен без проблем обрабатывать.mikhailefimov писал(а):44100/16
Фай, что Вы выложили имеет 1930680 отсчета на канал, всего 3861360.
Это немного меньше конечно, но не так существенно, у меня загрузка и отрисовка данных занимает примерно 115 мс, при условии 90% загрузки всех ядер . Остается выяснить параметры Вашего "ленивого" ПК. Но судя по 12 версии LabVIEW, ему еще далеко до пристарелого возраста.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 19
- Зарегистрирован: 05 ноя 2013, 19:42
- Версия LabVIEW: 2012
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Читать wav-file
IvanLis, Dell Vostro V131. Это ноут. i3, 2350MHz, 4Gb, win7 64bit
Есть задача - оценить один из параметров качества акустической системы - стереофоничность.
Собираем тракт, где есть например CD-плеер, усилитель и пара акустических систем. Воспроизводим с диска минутный трек, который содержит оценочный эталонный сигнал, назовем его ЭС.
С помощью искусственной головы записываем то, что получилось, назовем это результирующий сигнал РС.
В программе мы открываем ЭС и РС, читая их (то, что мы сейчас и пытаемся делать).
Далее, есть прибор - гониометр, он реализован в моем VI. Принцип работы заключается в следующем: берутся сигналы правого и левого каналов (R и L соответственно), затем из них делается L+R и L-R. Эти сигналы подаются на вертикальные и горизонтальные отклоняющие пластины осцилографа. В моем случае прибор корректно заработал и начал показывать правильные данные при использовании XY Graph.
В идеале мы должны при наложении картинок от ЭС и РС друг на друга видеть разницу, которую потом будем оценивать.
Вот тут у меня и начался затык: в риалтайме я читаю данные прибором, но потом мне нужно их анализировать в минутном фрагменте. В идеале бы иметь возможность то, что прочитано, крутить туда-обратно, наблюдая изменение картинки гониометра в каждую секунду. Это, как я понимаю, какая-то довольно нетривиальная штука с циклами. Сам я не могу допереть, как такое сделать.
Разумеется, я не прошу сделать за меня, просто укажите, где лучше глянуть конкретные примеры? Может быть, кто-либо реализовывал похожие задачи... я на примерах смогу попробовать и потом спрошу, если возникнут проблемы!
Попробую более понятно написать.IvanLis писал(а): По поводу обработки, ничего сказать не могу, так как даже ее идеи не смог уловить.
Есть задача - оценить один из параметров качества акустической системы - стереофоничность.
Собираем тракт, где есть например CD-плеер, усилитель и пара акустических систем. Воспроизводим с диска минутный трек, который содержит оценочный эталонный сигнал, назовем его ЭС.
С помощью искусственной головы записываем то, что получилось, назовем это результирующий сигнал РС.
В программе мы открываем ЭС и РС, читая их (то, что мы сейчас и пытаемся делать).
Далее, есть прибор - гониометр, он реализован в моем VI. Принцип работы заключается в следующем: берутся сигналы правого и левого каналов (R и L соответственно), затем из них делается L+R и L-R. Эти сигналы подаются на вертикальные и горизонтальные отклоняющие пластины осцилографа. В моем случае прибор корректно заработал и начал показывать правильные данные при использовании XY Graph.
В идеале мы должны при наложении картинок от ЭС и РС друг на друга видеть разницу, которую потом будем оценивать.
Вот тут у меня и начался затык: в риалтайме я читаю данные прибором, но потом мне нужно их анализировать в минутном фрагменте. В идеале бы иметь возможность то, что прочитано, крутить туда-обратно, наблюдая изменение картинки гониометра в каждую секунду. Это, как я понимаю, какая-то довольно нетривиальная штука с циклами. Сам я не могу допереть, как такое сделать.
Разумеется, я не прошу сделать за меня, просто укажите, где лучше глянуть конкретные примеры? Может быть, кто-либо реализовывал похожие задачи... я на примерах смогу попробовать и потом спрошу, если возникнут проблемы!
-
- beginner
- Сообщения: 19
- Зарегистрирован: 05 ноя 2013, 19:42
- Версия LabVIEW: 2012
- Откуда: Санкт-Петербург
- Контактная информация:
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Читать wav-file
Вот ещё один вариант работы с wav-файлами: Audio DataPlugin. Пример использования в есть здесь, во втором посте. Я немного поразбирался, вся работа выполняется через инструменты File I/O -> Storage/DataPlugin, можно также получить все свойства файла и каждого канала, ну и конечно сами данные в виде графика или массива значений. Но навскидку как-то медленно грузит файл, если использовать Data File Viewer.vi на 1000 значений в таблице и 100000 значений на графике, то ещё терпимо, а если считать весь файл через Read Data, то долго. Хотя никто не мешает читать, скажем, по тысяче точек на каждой итерации и обрабатывать их. Через Get Properties это реализуется и вроде бы работает быстрее. Но субъективно чувствуется, что пример IvanLis быстрее, у меня время выполнения - 60 мс при втором и последующих запусках.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Читать wav-file
Вроде сложного ничего нет.mikhailefimov писал(а):В идеале мы должны при наложении картинок от ЭС и РС друг на друга видеть разницу, которую потом будем оценивать.
1. захватываем сигнал длиной 44100 отсчетов (1 сек)
2. сравниваем с эталоном и запоминаем разницу (по идее за 1 сек до следующей партии отсчетов можно успеть обработать)
3. ждем следующей партии данных и переходим к п.1
по окончании 1 мин. у нас будет 60 "разниц"
можно будет их просматривать и крутить
У меня следующий вопрос: каким образом Вы разницу вычисляете?
Для этого необходимо определить метрическое пространство между "козибоберами" отображаемыми на графиках.
Тем более если речь идет о аспирантуре, тут все должно быть доказуемо. А для этого этого Вам необходимо доказать выполнение трех свойств метрического пространства:
- тождества
- симметрии
- треугольника
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 19
- Зарегистрирован: 05 ноя 2013, 19:42
- Версия LabVIEW: 2012
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Читать wav-file
dadreamer, попробую обязательно! Спасибо!
Для этого я предполагал использовать сектора. Берем окружность, делим ее на какое-то количество секторов и смотрим, в какой сектор попал сигнал в ЭС и в какой - в РС. Если в разные - делаем вывод, что испытуемый тракт вносит пространственные искажения. В чем они выражаются, какая необходима разрешающая способность (количество секторов) и прочие сопутствующие вопросы - пока не могу сказать. Может быть, это вообще не сработает нужен эксперимент.IvanLis писал(а): У меня следующий вопрос: каким образом Вы разницу вычисляете?
Для этого необходимо определить метрическое пространство между "козибоберами" отображаемыми на графиках.
Тем более если речь идет о аспирантуре, тут все должно быть доказуемо. А для этого этого Вам необходимо доказать выполнение трех свойств метрического пространства:
- тождества
- симметрии
- треугольника
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Читать wav-file
Только учтите, что имя плагина для запуска будет Audio (по кр. мере у меня оно такое, а не как в примере). Ещё я подумал, что через OpenG будет сложновато прочитать wav-файл, т.к. чтение в бинарном режиме, а у wav есть заголовок и только после него идут данные. Так что тут налицо лишняя работа по парсингу и анализу. Хотя, если время есть, можете попробовать.mikhailefimov писал(а):dadreamer, попробую обязательно! Спасибо!
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Читать wav-file
Я бы начал с вычисления коэф. корреляции между спектрами принятого и эталонного сигналов.mikhailefimov писал(а):В чем они выражаются, какая необходима разрешающая способность (количество секторов) и прочие сопутствующие вопросы - пока не могу сказать. Может быть, это вообще не сработает нужен эксперимент.
Но начинать всегда сложно, удачи Вам.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 19
- Зарегистрирован: 05 ноя 2013, 19:42
- Версия LabVIEW: 2012
- Откуда: Санкт-Петербург
- Контактная информация:
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 4 Ответы
- 586 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 1 Ответы
- 1029 Просмотры
-
Последнее сообщение Artem.spb