Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 13.05.2018
Сообщений: 1

Обработка аудиофайлов для вычленения признаков

13.05.2018, 06:59. Показов 1049. Ответов 0

Студворк — интернет-сервис помощи студентам
Имеется набор аудиофайлов длительностью до 10 сек. с соревнований по информационной безопасности. Требуется обработать файлы в Python (Anaconda):
Выделить признаки говорящего соответствующими методами (mfcc, plp, lpc, cqcc, mgd и т.п). Признаки выделяются для категорий (обучающий, тестовый, рабочий), разложенным по соответствующим папкам. Необходимо признаки выделяются для каждого аудиофайла и сохраняются в один файл формата HDF5 для соответствующей категории.
После чего с использованием библиотеки MSR Identity Toolkit v1.0 на Matlab необходимо сделать модели обработки признаков по системам GMM-UBM и i-Vector.
Я сделал для одного из методов (MGD) обработки, но столкнулся с проблемой - не могу собрать все признаки в одну таблицу. Кто сможет подсказать косяк в цикле?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
## Подгружаем все нужные либы
import os
import sys
import fnmatch
import scipy.io.wavfile as wav
import numpy as np
import numpy
import matplotlib.pyplot as plt
import numpy.fft as yfft
import numpy.fft as nfft
import h5py
import numpy as np
 
 
##Загружаем аудиофайлы
root = 'H:\\...'
pattern = '*.wav'
 
mgd_list = []
print(mgd_list)
 
for folder, subdirs, files in os.walk(root):
#  print (folder)
  for filename in fnmatch.filter(files, pattern):
    fullname = os.path.join(folder, filename)
    name, pat = os.path.splitext(os.path.basename(fullname))
    #print(name, pat) 
##Формируем признаки
    #Формируем окна
    #загружаем ряд для анализа и выыбираем первые 3 секунды
    rate, sig = wav.read(fullname)
    signal = sig[0:int(3.5 * rate)]
    #print(signal)
#усиливаем высокие частоты
    pre_emphasis = 0.97
    emphasized_signal = numpy.append(signal[0], signal[1:] - pre_emphasis * signal[:-1]) 
#задаем шаг и размер окна
    frame_size = 0.025
    frame_stride = 0.01
    frame_length, frame_step = frame_size * rate, frame_stride * rate  
    signal_length = len(emphasized_signal)
    frame_length = int(round(frame_length))
    frame_step = int(round(frame_step))
    num_frames = int(numpy.ceil(float(numpy.abs(signal_length - frame_length)) / frame_step)) 
    pad_signal_length = num_frames * frame_step + frame_length
    z = numpy.zeros((pad_signal_length - signal_length))
    pad_signal = numpy.append(emphasized_signal, z) 
    indices = numpy.tile(numpy.arange(0, frame_length), (num_frames, 1)) + numpy.tile(numpy.arange(0, num_frames * frame_step, frame_step), (frame_length, 1)).T
    frames = pad_signal[indices.astype(numpy.int32, copy=False)]
#делаем окно хэмминга
    frames *= numpy.hamming(frame_length)
#расчитываем преоброзование фурье сигнала x(n)
    xspec = nfft.fft(frames)
#мнимая часть
    ixspec = np.imag(nfft.fft(frames))
#реальная часть 
    rxspec = np.real(nfft.fft(frames))
#получаем сигнал nx(n)
    nn, nm = frames.shape
    dep = np.arange(1, nn+1).reshape((nn,1))
    yframes = dep*frames
#расчитываем преоброзование фурье сигнала nx(n)
    yspec = nfft.fft(yframes)
#мнимая часть
    iyspec = np.imag(nfft.fft(yframes))
#реальная часть
    ryspec = np.real(nfft.fft(yframes))
#перемножаем и суммируем поэлементно мнимую и реальную части
    chs=(ryspec * rxspec) + (ixspec * iyspec)
#расчет модуля
    zn= np.abs(nfft.fft(frames))
#Считаем модифицированную групповую задержку (MGD)
    y = 0.9
    st = 2*y
    znam = zn**st
    alpha = 0.4
    x = (chs/znam)**alpha
for mgd in x:
    mgd = np.vstack(x) 
    print(mgd.shape)
np.savetxt('H:\\...', mgd, delimiter = ",")
Пробовал разные варианты с помощью np.stack и append для списка
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2018, 06:59
Ответы с готовыми решениями:

Обработка нечисловых признаков на примере бейсовского классификатора
Собственно есть тема Обработка нечисловых признаков на примере бейсовского классификатора. Однако в интернете информации мало, точнее...

Скрипт для выравнивания громкости аудиофайлов в папке
Есть утилита mp3gain.exe. Взята с офф сайта. Версия mp3gain-dos-1_5_2 (Command-line only version of mp3gain). Есть папка \\folder\ в...

Ищу консольный сплиттер для *.mp3 файлов (аудиофайлов)
Тут нет https://www.cyberforum.ru/cmd-bat/thread783604.html Хвалёный SoX не предлагать. Appendix - MP3 Support ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2018, 06:59
Помогаю со студенческими работами здесь

Выбор оптимального типа битрейта для конвертации аудиофайлов
Здравствуйте. Хотелось бы узнать - в чем разница (не с технической точки зрения, а в плане восприятия на слух), между постоянным,...

Нужен код для точного сравнения двух аудиофайлов (на наличие потерь)
Здравствуйте, дорогие киберфорумчане, помогите написать код для сравнения двух аудиофайлов, одинаковой длинны, одного формата (*wav), на...

Функция вычленения n го элемента из заданного списка
Функция вычленения любого элемента элемента из заданного списка. s :: Integer -> -> s 1 (x:xs) = xs s n (x:xs) = x: s...

Функция вычленения n-m -го элемента из заданного списка
Доброе время суток. Недавно начал изучать Haskell и столкнулся с проблемой. Вот рабочий код: hlab22 n (x:xs) = if n==1 then xs...

Какие есть способы вычленения слов из строки
Здравствуйте, подскажите, какие есть способы вычленения слов из строки и сохранения их, к примеру, в массив строк?


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru