Felguk-audio-box / README.md
Felguk's picture
Update README.md
c98f722 verified
---
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"/>
[![GitHub](https://img.shields.io/badge/GitHub-Profile-blue?style=for-the-badge&logo=github)](https://github.com/Redcorehash)
[![Twitter](https://img.shields.io/badge/Twitter-Profile-blue?style=for-the-badge&logo=x)](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! 🚀