pyara/
├── Model/
│ ├── Model_weights.bin
│ └── __init__.py
├── audio_prepare.py
├── config.py
├── main.py
├── model.py
├── tests/
│ └── test_audio/
│ ├── 1.aiff
│ ├── 1.flac
│ ├── 1.mp3
│ ├── 1.ogg
│ ├── 1.wav
│ ├── 2.wav
│ ├── Alg_1_0.wav
│ └── real_0.wav
│ └── tests.py
├── Developer_Guide.odt
├── Developer_Guide.pdf
├── setup.cfg
├── setup.py
└── LICENSE
pyara
- основной пространство имен для работы с аудиоанализом.
Класс конфигурации с основными переменными для управления поведением модели.
Public Members:
JUST_PREDICT
: bool - Включить только предсказание, без тренировки.DEBUG
: bool - Режим отладки.DATASET
: string - Имя набора данных.Docker
: bool - Флаг использования Docker.visualize
: bool - Включить визуализацию.FULL_DATA
: bool - Использовать полный набор данных.wandb_on
: bool - Включение Weight & Biases для отслеживания.seed
: int - Сид для генерации случайных чисел.model_name
: string - Имя модели.info
: string - Информация о конфигурации.archive_name
: string - Имя архива данных.width
: int - Ширина сигнала.train_bs
: int - Размер батча при обучении.valid_bs
: int - Размер батча при валидации.mels
: int - Количество Mel-кепстральных коэффициентов.lstm_layers
: int - Количество слоев LSTM.SAMPLE_RATE
: int - Частота дискретизации.NUM_SAMPLES
: int - Количество выборок.num_item_all
: int - Общее количество элементов.num_test
: int - Количество тестовых элементов.num_classes
: int - Количество классов.classes
: list - Список классов.activation
: string - Функция активации.device
: torch.device - Выбранное устройство для вычислений.best_model_w
: string - Имя файла с лучшими весами модели.
Предсказывает тип аудио (подлинное или синтезированное).
Parameters:
file_path
: string - Путь к аудиофайлу.print_probability
: bool - Флаг вывода вероятности.pitch_shift
: int - Смещение тональности.sample_rate
: int - Частота дискретизации.width
: int - Ширина окна.
Returns:
int
: 0 для подлинного аудио, 1 для синтезированного.
Example:
from pyara import predict_audio
predict_audio('C:/Tests/mp3.mp3')
Функция cut_if_necessary
предназначена для обрезки аудиосигнала до заданной ширины (количества выборок), если исходный сигнал имеет большую длину.
signal
(torch.Tensor
): Аудиосигнал.width
(int
): Ширина сигнала после обрезки. По умолчаниюCFG.width = 400
.
torch.Tensor
: Обрезанный аудиосигнал.
- Проверяет длину аудиосигнала (по оси времени, представленной третьим измерением тензора).
- Если длина аудиосигнала превышает заданную ширину (
width
), то происходит обрезка, удаляя лишние выборки. - Возвращает обрезанный аудиосигнал.
import torchaudio
import torch
MFCC_spectrogram = torchaudio.transforms.MFCC(
sample_rate=16000,
n_mfcc=80,
melkwargs={
"n_fft": 1024,
"n_mels": 80,
"hop_length": 256,
"mel_scale": "htk",
'win_length': 1024,
'window_fn': torch.hann_window,
'center': False
},
)
from pyara import cut_if_necessary
signal = signal.mean(dim=0)
signal = signal.unsqueeze(dim=0)
signal, sample_rate = torchaudio.load('test_audio')
signal = MFCC_spectrogram(signal)
signal = cut_if_necessary(signal, 300)
Функция right_pad_if_necessary
выполняет дополнение последнего измерения входного сигнала вправо, если это необходимо.
signal
(torch.Tensor
): Тензор сигнала, представляющий многомерные данные. Должен быть трехмерным тензором с размерностью[batch_size, num_channels, signal_length]
.width
(int
): Желаемая ширина сигнала после дополнения. По умолчанию значение берется изCFG
.
torch.Tensor
: Дополненный сигнал с выполненным дополнением последнего измерения вправо.
import torchaudio
import torch
MFCC_spectrogram = torchaudio.transforms.MFCC(
sample_rate=16000,
n_mfcc=80,
melkwargs={
"n_fft": 1024,
"n_mels": 80,
"hop_length": 256,
"mel_scale": "htk",
'win_length': 1024,
'window_fn': torch.hann_window,
'center': False
},
)
from pyara import right_pad_if_necessary
signal, sample_rate = torchaudio.load('C:/Users/79671/Downloads/real_0.wav')
signal = signal.mean(dim=0)
signal = signal.unsqueeze(dim=0)
signal = MFCC_spectrogram(signal)
signal = right_pad_if_necessary(signal, 300)
signal.shape
Функция prepare_signal
используется для подготовки аудиосигнала к обработке нейронной сетью.
voice_path
: Путь к аудиофайлу;pitch_shift
: Смещение тональности аудио (по умолчанию 0);width
: Ширина сигнала после обрезки;sample_rate
: Частота дискретизации аудиосигнала.
signal
: Подготовленный сигнал для обработки.
- Загрузка аудиофайла;
- Усреднение сигнала по каналам;
- Добавление размерности пакета к сигналу;
- Применение сдвига тональности, если требуется;
- Применение преобразования MFCC;
- Обрезка и дополнение спектрограммы, при необходимости;
- Повторение спектрограммы;
- Добавление размерности пакета к спектрограмме;
- Перемещение спектрограммы на устройство из CFG;
- Возврат подготовленного сигнала.
from pyara import prepare_signal
prepare_signal('C:/Tests/mp3.mp3')
Функция prepare_signals
используется для подготовки нескольких аудиосигналов к обработке нейронной сетью.
voice_paths
: Список путей к аудиофайлам;pitch_shift
: Смещение тональности аудио (по умолчанию 0);width
: Ширина сигнала после обрезки;sample_rate
: Частота дискретизации аудиосигнала.
signals
: Список подготовленных сигналов для обработки.
Для каждого аудиофайла в voice_paths
:
- Загрузка и усреднение сигнала;
- Добавление размерности пакета;
- Применение сдвига тональности, если необходимо;
- Применение преобразования MFCC;
- Обрезка и дополнение спектрограммы;
- Повторение спектрограммы;
- Добавление размерности пакета;
- Перемещение на устройство из CFG;
- Сборка всех подготовленных сигналов в
res
.
from pyara import prepare_signals
prepare_signals(['C:/Tests/mp3.mp3', 'C:/Tests/mp23.mp3'])
Функция prediction
используется для получения предсказания от модели по входному сигналу.
model
: Модель для предсказания, совместимая с PyTorch;signal
: Входной сигнал, трехмерный тензор[batch_size, num_channels, signal_length]
;print_probability
: Флаг для вывода вероятности предсказания (по умолчаниюFalse
).
Возвращает кортеж с предсказанной меткой класса и вероятностью. При print_probability=True
выводит также строку с вероятностью.
- Перенос модели на устройство из CFG;
- Сжатие измерения сигнала;
- Прямой проход модели;
- Применение Softmax для вероятностей;
- Возврат метки класса и вероятности;
- Вывод вероятности, если требуется.
from pyara import prediction
model = model_eval()
signal = prepare_signal(file_path, pitch_shift, width, sample_rate)
prediction(model, signal)
Функция prediction_multiple
используется для получения предсказаний от модели по нескольким входным сигналам.
model
: Модель для предсказания, совместимая с PyTorch;signals
: Список входных сигналов, каждый из которых - трехмерный тензор[batch_size, num_channels, signal_length]
.
Возвращает список предсказанных меток классов (1 для синтезированного голоса, 0 для реального голоса) и список вероятностей предсказания для каждого сигнала.
- Перенос модели на устройство из CFG;
- Проход по всем сигналам для сжатия измерений, прямого прохода модели и применения Softmax;
- Определение предсказанных классов и сбор вероятностей;
- Возврат списков классов и вероятностей.
from pyara import prediction_multiple
model = model_eval()
signals = prepare_signals([file_path1, file_path2], pitch_shift, width, sample_rate)
prediction_multiple(model, signals)
Эта функция выполняет следующие задачи:
-
Создание экземпляра
MFCCModel
:- Инициализирует новый экземпляр класса
MFCCModel
.
- Инициализирует новый экземпляр класса
-
Загрузка весов модели:
- Определяет путь к файлу с весами модели, обычно называемому 'Model_weights.bin', который находится в той же директории, что и скрипт.
- Загружает веса модели в созданный экземпляр
MFCCModel
.
-
Перевод модели в режим оценки:
- Переводит модель в режим оценки с помощью метода
eval()
. Это необходимо для тестирования или использования модели, поскольку отключает определенные слои и поведения, такие как слои исключения и нормализация пакетов, активные только во время обучения.
- Переводит модель в режим оценки с помощью метода
-
Перемещение модели на указанное устройство:
- Перемещает модель на устройство (например, CPU, GPU), указанное в конфигурации
CFG.device
.
- Перемещает модель на устройство (например, CPU, GPU), указанное в конфигурации
-
Возврат модели:
- Выводит сообщение 'Model Evaluated!' для указания на успешное завершение процесса.
- Возвращает готовый к использованию и перенесенный на указанное устройство экземпляр
MFCCModel
.
MFCCModel
: Экземпляр классаMFCCModel
, который был загружен весами, переведен в режим оценки и перемещен на указанное устройство.