Den4ikAI's picture
Create README.md
adf3bbf verified
|
raw
history blame
4.57 kB
metadata
language:
  - en
  - zh
  - de
  - es
  - ru
  - ko
  - fr
  - ja
  - pt
  - tr
  - pl
  - ca
  - nl
  - ar
  - sv
  - it
  - id
  - hi
  - fi
  - vi
  - he
  - uk
  - el
  - ms
  - cs
  - ro
  - da
  - hu
  - ta
  - 'no'
  - th
  - ur
  - hr
  - bg
  - lt
  - la
  - mi
  - ml
  - cy
  - sk
  - te
  - fa
  - lv
  - bn
  - sr
  - az
  - sl
  - kn
  - et
  - mk
  - br
  - eu
  - is
  - hy
  - ne
  - mn
  - bs
  - kk
  - sq
  - sw
  - gl
  - mr
  - pa
  - si
  - km
  - sn
  - yo
  - so
  - af
  - oc
  - ka
  - be
  - tg
  - sd
  - gu
  - am
  - yi
  - lo
  - uz
  - fo
  - ht
  - ps
  - tk
  - nn
  - mt
  - sa
  - lb
  - my
  - bo
  - tl
  - mg
  - as
  - tt
  - haw
  - ln
  - ha
  - ba
  - jw
  - su
tags:
  - audio
  - automatic-speech-recognition
license: mit
base_model:
  - openai/whisper-large-v2
pipeline_tag: automatic-speech-recognition

Den4ikAI/whisper-large-v2-no-digits-norm-punct

Это специальная версия модели openai/whisper-large-v2, из словаря которой были удалены все токены, отвечающие за цифры, а также токены с мусорной пунктуацией.

Основная цель этой модификации — заставить модель генерировать числа словами, а не цифрами. Это крайне полезно для задач нормализации текста, например, при подготовке данных для систем синтеза речи (TTS), где требуется произносить числа полностью.

Сравнение с оригинальной моделью

Вот наглядный пример, демонстрирующий разницу в поведении моделей при распознавании одной и той же аудиозаписи с фразой "Билет стоил двадцать тысяч рублей".

Модель Результат транскрипции
openai/whisper-large-v2 (Оригинал) <|startoftranscript|><|ru|><|transcribe|><|notimestamps|> Билет стоил **20000** рублей.<|endoftext|>
Den4ikAI/whisper-large-v2-no-digits-norm-punct (Эта модель) <|startoftranscript|><|ru|><|transcribe|><|notimestamps|> Билет стоил **двадцать тысяч** рублей.<|endoftext|>

Как видно, эта модель корректно нормализовала число, в то время как оригинальная версия оставила его в виде цифр.

Как использовать

Вы можете использовать эту модель так же, как и любую другую модель Whisper в библиотеке transformers.

from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torchaudio
import torch

# Укажите устройство (GPU, если доступен)
device = "cuda:0" if torch.cuda.is_available() else "cpu"


wav, sr = torchaudio.load("numbers5.mp3")
# Преобразование в моно и ресемплинг до 16кГц
if wav.shape[0] > 1:
    wav = torch.mean(wav, dim=0, keepdim=True)
resampler = torchaudio.transforms.Resample(sr, 16000)
wav = resampler(wav)
audio_input = wav.squeeze(0)

# Загрузка модели и процессора
model_id = "Den4ikAI/whisper-large-v2-no-digits-norm-punct"
processor = WhisperProcessor.from_pretrained(model_id)
model = WhisperForConditionalGeneration.from_pretrained(model_id).to(device)

# Обработка аудио и получение признаков
input_features = processor(
    audio_input, 
    sampling_rate=16000, 
    return_tensors="pt"
).input_features.to(device)

# Генерация токенов
# Для русского языка указываем language="russian"
predicted_ids = model.generate(input_features, language="russian", task="transcribe")

# Декодирование в текст
transcription = processor.batch_decode(
    predicted_ids, 
    skip_special_tokens=False # Установите True, чтобы убрать <|...|> токены
)

print(transcription)

# Пример вывода для аудио с числами:
# ['<|startoftranscript|><|ru|><|transcribe|><|notimestamps|> Билет стоил двадцать тысяч рублей.<|endoftext|>']