Kotoba Whisper V2.2
基於Whisper的日語自動語音識別模型,集成說話人分離和標點符號添加功能
下載量 22.80k
發布時間 : 10/18/2024
模型概述
Kotoba-Whisper-v2.2是一個日語自動語音識別(ASR)模型,基於Whisper架構開發,增加了說話人分離和標點符號添加的後處理功能。
模型特點
說話人分離
集成diarizers技術,能夠識別並分離不同說話人的語音內容
自動標點
使用punctuators技術為轉錄文本自動添加標點符號
高效推理
支持Flash Attention 2加速,提高GPU上的推理效率
模型能力
日語語音識別
多說話人分離
自動標點添加
長音頻處理
使用案例
會議記錄
多說話人會議轉錄
自動識別會議中不同發言人的語音內容並生成帶標點的文字記錄
可區分不同說話人並生成格式化的會議記錄
訪談記錄
訪談內容轉錄
將訪談錄音轉換為文字,自動區分採訪者和受訪者的發言
生成帶說話人標識和標點的訪談記錄
🚀 Kotoba-Whisper-v2.2
Kotoba-Whisper-v2.2 是一款基於日語的自動語音識別(ASR)模型。它在 kotoba-tech/kotoba-whisper-v2.0 的基礎上,集成了額外的後處理棧,並以 pipeline
的形式呈現。該模型具備說話人分離和添加標點等新特性,由 Asahi Ushio 和 Kotoba Technologies 合作開發。
🚀 快速開始
Kotoba-Whisper-v2.2 從 Hugging Face 🤗 Transformers 庫的 4.39 版本開始提供支持。若要運行該模型,首先需安裝最新版本的 Transformers。
pip install --upgrade pip
pip install --upgrade transformers accelerate torchaudio
pip install "punctuators==0.0.5"
pip install "pyannote.audio"
pip install git+https://github.com/huggingface/diarizers.git
若要從 Hub 加載預訓練的說話人分離模型,你需要先接受以下兩個模型的使用條款:
隨後,使用 Hugging Face 認證令牌進行登錄:
huggingface-cli login
✨ 主要特性
- 說話人分離:藉助 diarizers 實現說話人分離功能。
- 添加標點:利用 punctuators 為識別結果添加標點。
💻 使用示例
基礎用法
帶說話人分離的轉錄
該模型可與 pipeline
結合使用。
- 下載音頻樣本:
wget https://huggingface.co/kotoba-tech/kotoba-whisper-v2.2/resolve/main/sample_audio/sample_diarization_japanese.mp3
- 通過 pipeline 運行模型:
import torch
from transformers import pipeline
# 配置
model_id = "kotoba-tech/kotoba-whisper-v2.2"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model_kwargs = {"attn_implementation": "sdpa"} if torch.cuda.is_available() else {}
# 加載模型
pipe = pipeline(
model=model_id,
torch_dtype=torch_dtype,
device=device,
model_kwargs=model_kwargs,
batch_size=8,
trust_remote_code=True,
)
# 運行推理
result = pipe("sample_diarization_japanese.mp3", chunk_length_s=15)
print(result)
>>> {
'chunks/SPEAKER_00': [{'speaker_id': 'SPEAKER_00', 'text': '水をマレーシアから買わなくてはならないのです', 'timestamp': [22.1, 24.97]}],
'chunks/SPEAKER_01': [{'speaker_id': 'SPEAKER_01', 'text': 'これも先ほどがずっと言っている自分の感覚的には大丈夫ですけれども', 'timestamp': [0.03, 13.85]},
{'speaker_id': 'SPEAKER_01', 'text': '今は屋外の気溫', 'timestamp': [5.03, 18.85]},
{'speaker_id': 'SPEAKER_01', 'text': '晝も夜も上がってますので', 'timestamp': [7.63, 21.45]},
{'speaker_id': 'SPEAKER_01', 'text': '空気の入れ替えだけではかえって人が上がってきます', 'timestamp': [9.91, 23.73]}],
'chunks/SPEAKER_02': [{'speaker_id': 'SPEAKER_02', 'text': '愚直にやっぱりその街の良さをアピールしていくという', 'timestamp': [13.48, 22.1]},
{'speaker_id': 'SPEAKER_02', 'text': 'そういう姿勢が基本にあった上での', 'timestamp': [17.26, 25.88]},
{'speaker_id': 'SPEAKER_02', 'text': 'こういうPR作戦だと思うんですよね', 'timestamp': [19.86, 28.48]}],
'chunks': [{'speaker_id': 'SPEAKER_00', 'text': '水をマレーシアから買わなくてはならないのです', 'timestamp': [22.1, 24.97]},
{'speaker_id': 'SPEAKER_01', 'text': 'これも先ほどがずっと言っている自分の感覚的には大丈夫ですけれども', 'timestamp': [0.03, 13.85]},
{'speaker_id': 'SPEAKER_01', 'text': '今は屋外の気溫', 'timestamp': [5.03, 18.85]},
{'speaker_id': 'SPEAKER_01', 'text': '晝も夜も上がってますので', 'timestamp': [7.63, 21.45]},
{'speaker_id': 'SPEAKER_01', 'text': '空気の入れ替えだけではかえって人が上がってきます', 'timestamp': [9.91, 23.73]},
{'speaker_id': 'SPEAKER_02', 'text': '愚直にやっぱりその街の良さをアピールしていくという', 'timestamp': [13.48, 22.1]},
{'speaker_id': 'SPEAKER_02', 'text': 'そういう姿勢が基本にあった上での', 'timestamp': [17.26, 25.88]},
{'speaker_id': 'SPEAKER_02', 'text': 'こういうPR作戦だと思うんですよね', 'timestamp': [19.86, 28.48]}],
'speaker_ids': ['SPEAKER_00', 'SPEAKER_01', 'SPEAKER_02'],
'text/SPEAKER_00': '水をマレーシアから買わなくてはならないのです',
'text/SPEAKER_01': 'これも先ほどがずっと言っている自分の感覚的には大丈夫ですけれども今は屋外の気溫晝も夜も上がってますので空気の入れ替えだけではかえって人が上がってきます',
'text/SPEAKER_02': '愚直にやっぱりその街の良さをアピールしていくというそういう姿勢が基本にあった上でのこういうPR作戦だと思うんですよね'
}
高級用法
激活標點添加功能
- result = pipe("sample_diarization_japanese.mp3")
+ result = pipe("sample_diarization_japanese.mp3", add_punctuation=True)
標點添加器將應用於 text/*
特徵。例如:
'text/SPEAKER_00': '水をマレーシアから買わなくてはならないのです。'
'text/SPEAKER_01': 'これも先ほどがずっと言っている。自分の感覚的には大丈夫です。けれども。今は屋外の気溫、晝も夜も上がってますので、空気の入れ替えだけではかえって人が上がってきます。'
'text/SPEAKER_02': '愚直にその街の良さをアピールしていくという。そういう姿勢が基本にあった上での、こういうPR作戦だと思うんですよね。'
控制說話人數量(詳見 此處)
- result = pipe("sample_diarization_japanese.mp3")
+ result = pipe("sample_diarization_japanese.mp3", num_speakers=3)
或者
- result = pipe("sample_diarization_japanese.mp3")
+ result = pipe("sample_diarization_japanese.mp3", min_speakers=2, max_speakers=5)
在音頻前後添加靜音有時可提高轉錄質量
- result = pipe("sample_diarization_japanese.mp3")
+ result = pipe("sample_diarization_japanese.mp3", add_silence_end=0.5, add_silence_start=0.5) # 在音頻前後添加 0.5 秒靜音
使用 Flash Attention 2
若你的 GPU 支持,建議使用 Flash-Attention 2。為此,你需要先安裝 Flash Attention:
pip install flash-attn --no-build-isolation
然後在 from_pretrained
中傳入 attn_implementation="flash_attention_2"
:
- model_kwargs = {"attn_implementation": "sdpa"} if torch.cuda.is_available() else {}
+ model_kwargs = {"attn_implementation": "flash_attention_2"} if torch.cuda.is_available() else {}
📄 許可證
本項目採用 Apache-2.0 許可證。
致謝
- OpenAI 提供了 Whisper 模型。
- Hugging Face 🤗 Transformers 實現了模型集成。
- Hugging Face 🤗 提供了 Distil-Whisper 代碼庫。
- Reazon Human Interaction Lab 提供了 ReazonSpeech 數據集。
Voice Activity Detection
MIT
基於pyannote.audio 2.1版本的語音活動檢測模型,用於識別音頻中的語音活動時間段
語音識別
V
pyannote
7.7M
181
Wav2vec2 Large Xlsr 53 Portuguese
Apache-2.0
這是一個針對葡萄牙語語音識別任務微調的XLSR-53大模型,基於Common Voice 6.1數據集訓練,支持葡萄牙語語音轉文本。
語音識別 其他
W
jonatasgrosman
4.9M
32
Whisper Large V3
Apache-2.0
Whisper是由OpenAI提出的先進自動語音識別(ASR)和語音翻譯模型,在超過500萬小時的標註數據上訓練,具有強大的跨數據集和跨領域泛化能力。
語音識別 支持多種語言
W
openai
4.6M
4,321
Whisper Large V3 Turbo
MIT
Whisper是由OpenAI開發的最先進的自動語音識別(ASR)和語音翻譯模型,經過超過500萬小時標記數據的訓練,在零樣本設置下展現出強大的泛化能力。
語音識別
Transformers 支持多種語言

W
openai
4.0M
2,317
Wav2vec2 Large Xlsr 53 Russian
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53模型微調的俄語語音識別模型,支持16kHz採樣率的語音輸入
語音識別 其他
W
jonatasgrosman
3.9M
54
Wav2vec2 Large Xlsr 53 Chinese Zh Cn
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53模型微調的中文語音識別模型,支持16kHz採樣率的語音輸入。
語音識別 中文
W
jonatasgrosman
3.8M
110
Wav2vec2 Large Xlsr 53 Dutch
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53微調的荷蘭語語音識別模型,在Common Voice和CSS10數據集上訓練,支持16kHz音頻輸入。
語音識別 其他
W
jonatasgrosman
3.0M
12
Wav2vec2 Large Xlsr 53 Japanese
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53模型微調的日語語音識別模型,支持16kHz採樣率的語音輸入
語音識別 日語
W
jonatasgrosman
2.9M
33
Mms 300m 1130 Forced Aligner
基於Hugging Face預訓練模型的文本與音頻強制對齊工具,支持多種語言,內存效率高
語音識別
Transformers 支持多種語言

M
MahmoudAshraf
2.5M
50
Wav2vec2 Large Xlsr 53 Arabic
Apache-2.0
基於facebook/wav2vec2-large-xlsr-53微調的阿拉伯語語音識別模型,在Common Voice和阿拉伯語語音語料庫上訓練
語音識別 阿拉伯語
W
jonatasgrosman
2.3M
37
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98