Как в mp3-файле-словаре найти паузы и "покусать" по ним файл

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Как в mp3-файле-словаре найти паузы и "покусать" по ним файл

Сообщение qwertyhp » 26.06.2017 (Пн) 19:32

Всем доброго дня!
Есть англо-русский mp3-словарь в виде mp3-файла. Содержит начитанные слова с переводом. Словарные пары разделены паузами.
По мере освоения словаря повторение освоенных слов становится лишним и занимает время/отвлекает внимание.
Целесообразно создать программу, которая вычисляет позиции пауз в mp3-словаре, и по ним:
1. Пропускает уже освоенные словарные пары
2. Режет исходный словарь на словарные пары, которые сохраняет на диск в виде отдельных файлов (для mp3-плеера).
3. Комбинация пп.1 и 2.
Целесообразно-то оно целесообразно - но вот как это сделать?
Пожалуйста, подскажите, кто может.
Пятачок Forever! :)

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение Mikle » 26.06.2017 (Пн) 19:55

Проще всего сконвертировать MP3 в WAV, а далее написать свою программу для нарезки. Если дашь образец исходного материала, могу попробовать, только до 2 июля я вряд ли освобожусь, занят на работе сильно.

The trick
Постоялец
Постоялец
 
Сообщения: 774
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение The trick » 26.06.2017 (Пн) 20:42

Для получения PCM данный из MP3, а также для обратного конвертирования можно использовать ACM. (для конверсии в MP3 нужен будет какой-нибудь MP3 кодек, например Lame).
Далее просто анализируешь уровень сигнала, и если в течении какого-то промежутка времени амплитуда сигнала мала (задаешь пороговое значение для амплитуды и для времени), извлекаешь данные, и сохраняешь в MP3 через ACM. Опционально можно какой-нибудь сервис распознавания речи использовать чтобы получить имя файла, как например тут.
UA6527P

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение qwertyhp » 26.06.2017 (Пн) 21:01

Это файл из «Учим английские слова в МР3», конвертированный в WAV и заархивированный. Только как написать свою программу для нарезки WAV, я тоже не знаю... Основываясь на графическом представлении этого файла, предположу, что в паузах звук практически отсутствует.
Вложения
Lesson_1_Part.zip
файл из «Учим английские слова в МР3»
(459.93 Кб) Скачиваний: 200
Пятачок Forever! :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение Хакер » 27.06.2017 (Вт) 0:41

The trick писал(а):Далее просто анализируешь уровень сигнала, и если в течении какого-то промежутка времени амплитуда сигнала мала (задаешь пороговое значение для амплитуды и для времени)

Я бы перед этим прогнал сигнал через фильтр, чтобы вырезать НЧ (особенно DC и часто встречающийся 50 Hz гул) и ВЧ шумы, которые могут помешать пороговому детектированию пауз.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение Mikle » 27.06.2017 (Вт) 11:01

Хакер писал(а):Я бы перед этим прогнал сигнал через фильтр, чтобы вырезать НЧ (особенно DC и часто встречающийся 50 Hz гул) и ВЧ шумы, которые могут помешать пороговому детектированию пауз.

ВЧ шум определяется порогом детектирования пауз, а вот НЧ действительно надо резать, в приведённом примере неслабая DC составляющая.
Вот я не утерпел и сделал пример, имеется HPFilter, программа не универсальная, рассчитывается, что исходный файл будет таким, как в примере - 22050 Гц, 16 бит, моно, Windows PCM WAVE формат.
Вложения
PauseCut.zip
(464.51 Кб) Скачиваний: 177

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение qwertyhp » 28.06.2017 (Ср) 19:25

Mikle, спасибо огромное, сейчас разбираюсь с Вашим примером.
Фильтрация нужна, Вы правы - но, похоже, она же и создает проблемы (ошибка '6' - переполнение) при попытке "покусать" уже другой фрагмент того же самого исходного файла (целиком исходный файл выложить не получается, 78 mB).
Фрагмент, вызывающий переполнение, прилагаю во вложении.
Вложения
in-1.zip
(254.44 Кб) Скачиваний: 155
Пятачок Forever! :)

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение Mikle » 28.06.2017 (Ср) 19:47

Переполняется Integer, исходный сигнал подгружен. Переделай процедуру фильтрации так:
Код: Выделить всё
Private Sub HPFilter()
  Dim i As Long
  Dim d As Single
  Dim c As Long

  For i = 0 To Size - 1
    d = d * k1 + ArIn(i) * k2
    c = ArIn(i) - d
    If c > 32767 Then
      ArIn(i) = 32767
    ElseIf c < -32767 Then
      ArIn(i) = -32767
    Else
      ArIn(i) = c
    End If
  Next i
End Sub

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение Mikle » 29.06.2017 (Чт) 9:38

Я сначала пытался найти ошибку, почему фильтр, который ничего не добавляет, а только что-то убирает, умудряется где-то поднять мгновенный уровень сигнала, а потом понял - ошибки нет, так же будет работать цепочка резистор-конденсатор.

Teranas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 13.12.2008 (Сб) 4:26
Откуда: Новосибирск

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение Teranas » 21.09.2017 (Чт) 6:00

Mikle
Это, не получается вырезает по два звуковых куска в один файл, хотя паузы есть везде...
Немного доделал интерфейс, не ругайся...
Вложения
PauseCut.7z
Код SplitWav по паузам
(12.56 Кб) Скачиваний: 182
CommonFemale01.zip
Файл wma
(1018.57 Кб) Скачиваний: 149
waveditor.7z
Программа, подойдёт для конвертайии wma в wav
(1004.77 Кб) Скачиваний: 149
С уважением, Андрей.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как в mp3-файле-словаре найти паузы и "покусать" по ним

Сообщение Mikle » 21.09.2017 (Чт) 7:47

Teranas писал(а):вырезает по два звуковых куска в один файл, хотя паузы есть везде...

Так и задумано, в исходном куске пары слов.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 7

    TopList