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|>']