|
--- |
|
tags: |
|
- audio |
|
- music |
|
- sound |
|
- deep-learning |
|
- transformers |
|
license: apache-2.0 |
|
--- |
|
|
|
<img src="https://www.i2img.com/download/upscale-image_ru_1_198_13761087546787cbe35e5b61.68096453/hd_016d861b7d3cfc1d87b212e623e07617_6787cbe39be76.png" alt="felguk-audio.box Logo" width="200"/> |
|
|
|
[](https://github.com/Redcorehash) |
|
[](https://x.com/redlancer0) |
|
|
|
# felguk-audio.box |
|
|
|
Модель `felguk-audio.box` — это мощная модель для обработки аудиоданных, разработанная для задач классификации, генерации и анализа звуковых сигналов. Модель основана на архитектуре Transformer и обучена на большом наборе аудиоданных, что позволяет ей эффективно работать с различными типами звуков, включая музыку, речь и окружающие шумы. |
|
|
|
## Model Summary |
|
|
|
Вот основные характеристики модели: |
|
|
|
| Характеристика | Значение | |
|
|------------------------|--------------------------------------------------------------------------| |
|
| **Архитектура** | Transformer-based | |
|
| **Задачи** | Классификация аудио, генерация звука, анализ звуковых сигналов | |
|
| **Поддерживаемые типы аудио** | Музыка, речь, окружающие шумы | |
|
| **Обучение** | Предварительно обучена на большом наборе аудиоданных | |
|
| **Размер модели** | 300M параметров | |
|
| **Язык** | Многоязычная поддержка (английский, русский, другие языки) | |
|
| **Лицензия** | Apache 2.0 | |
|
|
|
## Chunked Long-Form Processing |
|
|
|
Модель `felguk-audio.box` поддерживает обработку длинных аудиофайлов путем разбиения их на чанки (фрагменты). Это особенно полезно для задач, где входные аудиофайлы могут быть продолжительными (например, подкасты, лекции или музыкальные композиции). |
|
|
|
### Как это работает |
|
|
|
1. **Разбиение на чанки**: |
|
- Аудиофайл разделяется на перекрывающиеся фрагменты фиксированной длины (например, 10 секунд). |
|
- Перекрытие (overlap) между чанками помогает избежать потери контекста на границах фрагментов. |
|
|
|
2. **Обработка каждого чанка**: |
|
- Каждый чанк обрабатывается моделью независимо. |
|
- Результаты обработки (например, классификация или транскрипция) объединяются для получения финального результата. |
|
|
|
3. **Агрегация результатов**: |
|
- Для задач классификации результаты агрегируются путем усреднения или голосования. |
|
- Для задач транскрипции результаты объединяются с учетом перекрытий. |
|
|
|
### Пример кода |
|
|
|
Вот как можно реализовать обработку длинных аудиофайлов: |
|
|
|
```python |
|
import torchaudio |
|
from transformers import AutoModelForAudioClassification, AutoFeatureExtractor |
|
|
|
# Загрузка модели и feature extractor |
|
model_name = "felguk-audio.box" |
|
model = AutoModelForAudioClassification.from_pretrained(model_name) |
|
feature_extractor = AutoFeatureExtractor.from_pretrained(model_name) |
|
|
|
# Функция для разбиения аудио на чанки |
|
def split_audio(waveform, sample_rate, chunk_length=10, overlap=2): |
|
chunk_size = int(chunk_length * sample_rate) |
|
step_size = int((chunk_length - overlap) * sample_rate) |
|
chunks = [] |
|
for i in range(0, waveform.shape[1], step_size): |
|
chunk = waveform[:, i:i + chunk_size] |
|
if chunk.shape[1] < chunk_size: |
|
# Дополнение последнего чанка, если он короче |
|
padding = torch.zeros((1, chunk_size - chunk.shape[1])) |
|
chunk = torch.cat([chunk, padding], dim=1) |
|
chunks.append(chunk) |
|
return chunks |
|
|
|
# Загрузка аудиофайла |
|
audio_file = "long_audio.wav" |
|
waveform, sample_rate = torchaudio.load(audio_file) |
|
|
|
# Разбиение на чанки |
|
chunks = split_audio(waveform, sample_rate, chunk_length=10, overlap=2) |
|
|
|
# Обработка каждого чанка |
|
results = [] |
|
for chunk in chunks: |
|
inputs = feature_extractor(chunk.squeeze().numpy(), sampling_rate=sample_rate, return_tensors="pt") |
|
with torch.no_grad(): |
|
logits = model(**inputs).logits |
|
predicted_class_idx = logits.argmax(-1).item() |
|
results.append(model.config.id2label[predicted_class_idx]) |
|
|
|
# Агрегация результатов (например, голосование) |
|
from collections import Counter |
|
final_result = Counter(results).most_common(1)[0][0] |
|
print(f"Final classification result: {final_result}") |
|
``` |
|
## Использование |
|
|
|
Для использования модели `felguk-audio.box` в вашем проекте, выполните следующие шаги: |
|
|
|
### Установка зависимостей |
|
|
|
Убедитесь, что у вас установлены необходимые библиотеки: |
|
|
|
```bash |
|
pip install torch transformers datasets |
|
``` |
|
|
|
#### Загрузка модели |
|
```bash |
|
from transformers import AutoModelForAudioClassification, AutoFeatureExtractor |
|
import torchaudio |
|
|
|
# Загрузка модели и feature extractor |
|
model_name = "felguk-audio.box" |
|
model = AutoModelForAudioClassification.from_pretrained(model_name) |
|
feature_extractor = AutoFeatureExtractor.from_pretrained(model_name) |
|
|
|
# Загрузка аудиофайла |
|
audio_file = "path_to_your_audio_file.wav" |
|
waveform, sample_rate = torchaudio.load(audio_file) |
|
|
|
# Преобразование аудио в формат, подходящий для модели |
|
inputs = feature_extractor(waveform.squeeze().numpy(), sampling_rate=sample_rate, return_tensors="pt") |
|
|
|
# Получение предсказаний |
|
with torch.no_grad(): |
|
logits = model(**inputs).logits |
|
|
|
# Интерпретация результатов |
|
predicted_class_idx = logits.argmax(-1).item() |
|
print(f"Predicted class: {model.config.id2label[predicted_class_idx]}") |
|
``` |
|
##### Пример использование модели |
|
```bash |
|
# Пример классификации аудио |
|
audio_file = "example.wav" |
|
waveform, sample_rate = torchaudio.load(audio_file) |
|
|
|
inputs = feature_extractor(waveform.squeeze().numpy(), sampling_rate=sample_rate, return_tensors="pt") |
|
|
|
with torch.no_grad(): |
|
logits = model(**inputs).logits |
|
|
|
predicted_class_idx = logits.argmax(-1).item() |
|
print(f"Predicted class: {model.config.id2label[predicted_class_idx]}") |
|
``` |
|
###### Обучение |
|
Если вы хотите дообучить модель на своих данных,вы можете использовать этот код: |
|
```bash |
|
from datasets import load_dataset |
|
from transformers import Trainer, TrainingArguments |
|
|
|
# Загрузка датасета |
|
dataset = load_dataset("your_audio_dataset") |
|
|
|
# Определение TrainingArguments |
|
training_args = TrainingArguments( |
|
output_dir="./results", |
|
evaluation_strategy="epoch", |
|
learning_rate=2e-5, |
|
per_device_train_batch_size=8, |
|
per_device_eval_batch_size=8, |
|
num_train_epochs=3, |
|
weight_decay=0.01, |
|
) |
|
|
|
# Инициализация Trainer |
|
trainer = Trainer( |
|
model=model, |
|
args=training_args, |
|
train_dataset=dataset["train"], |
|
eval_dataset=dataset["test"], |
|
) |
|
|
|
# Обучение модели |
|
trainer.train() |
|
``` |
|
## Deploy Space |
|
|
|
Вы можете легко развернуть модель `felguk-audio.box` в [Hugging Face Spaces](https://huggingface.co/spaces) с помощью Gradio или Streamlit. Вот пошаговое руководство: |
|
|
|
### Использование Gradio |
|
|
|
1. Установите Gradio: |
|
|
|
```bash |
|
pip install gradio |
|
``` |
|
Создать app.py: |
|
```bash |
|
import gradio as gr |
|
from transformers import AutoModelForAudioClassification, AutoFeatureExtractor |
|
import torchaudio |
|
|
|
# Загрузка модели и feature extractor |
|
model_name = "felguk-audio.box" |
|
model = AutoModelForAudioClassification.from_pretrained(model_name) |
|
feature_extractor = AutoFeatureExtractor.from_pretrained(model_name) |
|
|
|
# Функция для классификации аудио |
|
def classify_audio(audio_file): |
|
waveform, sample_rate = torchaudio.load(audio_file) |
|
inputs = feature_extractor(waveform.squeeze().numpy(), sampling_rate=sample_rate, return_tensors="pt") |
|
with torch.no_grad(): |
|
logits = model(**inputs).logits |
|
predicted_class_idx = logits.argmax(-1).item() |
|
return model.config.id2label[predicted_class_idx] |
|
|
|
# Создание интерфейса Gradio |
|
interface = gr.Interface( |
|
fn=classify_audio, |
|
inputs=gr.Audio(type="filepath"), |
|
outputs="text", |
|
title="felguk-audio.box: Audio Classification", |
|
description="Upload an audio file to classify it using the felguk-audio.box model." |
|
) |
|
|
|
# Запуск интерфейса |
|
interface.launch() |
|
``` |
|
Потом надо добавить requirements.txt: |
|
```bash |
|
torch |
|
torchaudio |
|
transformers |
|
gradio |
|
``` |
|
## Gr load |
|
Вы можете загрузить модель с помощью gr load: |
|
```bash |
|
import gradio as gr |
|
|
|
# Загрузка модели через Hugging Face |
|
model_interface = gr.load( |
|
"models/felguk-audio.box", # Укажите путь к вашей модели |
|
title="felguk-audio.box: Audio Classification", |
|
description="Upload an audio file to classify it using the felguk-audio.box model." |
|
) |
|
|
|
# Запуск интерфейса |
|
model_interface.launch() |
|
``` |
|
## Установка в LM Studio |
|
|
|
LM Studio — это удобное приложение для локального запуска языковых моделей. Чтобы установить и использовать модель `felguk-audio.box` в LM Studio, выполните следующие шаги: |
|
|
|
1. **Скачайте и установите LM Studio**: |
|
- Перейдите на официальный сайт [LM Studio](https://lmstudio.ai/). |
|
- Скачайте версию для вашей операционной системы (Windows, macOS, Linux). |
|
- Установите приложение. |
|
|
|
2. **Загрузите модель в формате GGUF**: |
|
- Убедитесь, что ваша модель `felguk-audio.box` доступна в формате GGUF. Если модель еще не конвертирована, используйте инструменты, такие как `llama.cpp`, для конвертации. |
|
- Загрузите файл модели (например, `felguk-audio.box.gguf`) на ваш компьютер. |
|
|
|
3. **Добавьте модель в LM Studio**: |
|
- Откройте LM Studio. |
|
- Перейдите на вкладку **"Models"**. |
|
- Нажмите **"Download a model"** и выберите **"From a file"**. |
|
- Укажите путь к файлу `felguk-audio.box.gguf`. |
|
|
|
4. **Запустите модель**: |
|
- После загрузки модели выберите её в списке. |
|
- Перейдите на вкладку **"Chat"**. |
|
- Настройте параметры модели (например, температура, максимальная длина токенов). |
|
- Начните взаимодействие с моделью. |
|
|
|
--- |
|
|
|
### Пример использования |
|
|
|
1. **Запустите LM Studio**. |
|
2. Выберите модель `felguk-audio.box` из списка. |
|
3. Введите запрос в текстовое поле и нажмите **Enter**. |
|
4. Модель обработает запрос и вернёт ответ. |
|
|
|
--- |
|
|
|
### Примечания |
|
- Если модель не поддерживает формат GGUF, конвертируйте её с помощью инструментов, таких как `llama.cpp`. |
|
- Убедитесь, что ваш компьютер соответствует системным требованиям для запуска модели (например, наличие достаточного объема оперативной памяти и видеопамяти). |
|
|
|
Теперь вы можете использовать модель `felguk-audio.box` локально через LM Studio! 🚀 |
|
|
|
|