Whisperfile
Whisper是一個基於Transformer的編碼器-解碼器模型,用於語音識別和翻譯任務,支持多語言處理。
下載量 353
發布時間 : 5/17/2024
模型概述
Whisper是一個強大的自動語音識別(ASR)系統,能夠處理多種語言的語音轉錄和翻譯任務。它在100萬小時的弱標記音頻和400萬小時的偽標記音頻上進行訓練,具有出色的魯棒性和準確性。
模型特點
多語言支持
支持多種語言的語音識別和翻譯,包括新增的粵語支持
高魯棒性
對口音、背景噪音和專業語言具有更強的魯棒性
高效分塊處理
採用分塊算法處理長音頻,比傳統順序算法快9倍
時間戳支持
可獲取句子級和單詞級的時間戳信息
模型能力
語音識別
語音翻譯
多語言處理
長音頻處理
時間戳生成
使用案例
語音轉錄
會議記錄
將會議錄音自動轉錄為文字
高準確率的文字轉錄
播客轉錄
將播客內容轉錄為可搜索的文字
支持多種語言和口音
語音翻譯
即時翻譯
將一種語言的語音即時翻譯為另一種語言的文字
接近當前先進水平的翻譯準確性
輔助工具
無障礙應用
為聽障人士提供語音轉文字服務
提高信息可訪問性
🚀 Whisper量化Llamafile項目
本項目為whisper模型生成了一系列llamafiles,解決了語音識別模型在特定場景下的部署和使用問題,為開發者提供了便捷的語音識別解決方案。
🚀 快速開始
運行模型
chmod +x <model>.llamafile
./<model>.llamafile
使用示例
基礎用法
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
model_id = "openai/whisper-large-v3"
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)
processor = AutoProcessor.from_pretrained(model_id)
pipe = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
max_new_tokens=128,
chunk_length_s=30,
batch_size=16,
return_timestamps=True,
torch_dtype=torch_dtype,
device=device,
)
dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]
result = pipe(sample)
print(result["text"])
高級用法
# 轉錄本地音頻文件
result = pipe("audio.mp3")
# 指定源音頻語言
result = pipe(sample, generate_kwargs={"language": "english"})
# 執行語音翻譯任務
result = pipe(sample, generate_kwargs={"task": "translate"})
# 獲取句子級時間戳
result = pipe(sample, return_timestamps=True)
print(result["chunks"])
# 獲取單詞級時間戳
result = pipe(sample, return_timestamps="word")
print(result["chunks"])
# 組合使用參數
result = pipe(sample, return_timestamps=True, generate_kwargs={"language": "french", "task": "translate"})
print(result["chunks"])
✨ 主要特性
- 為多語言的Whisper模型提供量化的llamafile,包括q8、q5k量化版本,也提供原始模型。
- 每個llamafile可啟動服務器,將音頻文件轉換為合適的.wav格式,並在終端輸出中打印/著色解碼文本。
- 支持使用
pipeline
類轉錄任意長度的音頻文件,採用分塊算法,比OpenAI提出的順序算法快9倍。 - 可自動預測源音頻的語言,也可手動指定。
- 支持語音轉錄和語音翻譯任務,還可獲取句子級和單詞級的時間戳。
📦 安裝指南
pip install --upgrade pip
pip install --upgrade git+https://github.com/huggingface/transformers.git accelerate datasets[audio]
額外的速度和內存優化
Flash Attention
pip install flash-attn --no-build-isolation
- model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True, use_flash_attention_2=True)
Torch Scale-Product-Attention (SDPA)
pip install --upgrade optimum
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = model.to_bettertransformer()
📚 詳細文檔
模型詳情
Whisper是一個基於Transformer的編碼器 - 解碼器模型,也稱為_序列到序列_模型。它在100萬小時的弱標記音頻和400萬小時使用Whisper large-v2
收集的偽標記音頻上進行訓練。
模型在僅英語數據或多語言數據上進行訓練。僅英語模型用於語音識別任務,多語言模型用於語音識別和語音翻譯任務。
Whisper檢查點有五種不同模型大小的配置,最小的四個在僅英語或多語言數據上訓練,最大的檢查點僅為多語言模型。所有十個預訓練檢查點都可以在Hugging Face Hub上找到。
大小 | 參數 | 僅英語 | 多語言 |
---|---|---|---|
tiny | 39 M | 🔗 | 🔗 |
base | 74 M | 🔗 | 🔗 |
small | 244 M | 🔗 | 🔗 |
medium | 769 M | 🔗 | 🔗 |
large | 1550 M | x | 🔗 |
large-v2 | 1550 M | x | 🔗 |
large-v3 | 1550 M | x | 🔗 |
訓練數據
模型在100萬小時的弱標記音頻和400萬小時使用Whisper large-v2
收集的偽標記音頻上進行訓練。在給定語言中的轉錄性能與該語言的訓練數據量直接相關。
性能和侷限性
- 優點:與許多現有的自動語音識別(ASR)系統相比,該模型對口音、背景噪音、專業語言具有更強的魯棒性,並且在多語言到英語的零樣本翻譯方面表現出色,語音識別和翻譯的準確性接近當前的先進水平。
- 缺點:由於模型是使用大規模噪聲數據進行弱監督訓練的,預測結果可能包含音頻輸入中實際未說出的文本(即幻覺)。模型在不同語言上的表現不均衡,在資源較少和/或可發現性較低的語言上準確性較低。此外,模型的序列到序列架構容易生成重複文本,儘管可以通過束搜索和溫度調度在一定程度上緩解,但無法完全解決。
更廣泛的影響
- 積極方面:Whisper模型的轉錄能力可用於改進輔助工具,儘管不能直接用於即時轉錄,但基於其構建的應用程序可能實現接近即時的語音識別和翻譯。
- 潛在風險:發佈Whisper模型可能帶來潛在的雙重用途問題,可能使更多人能夠構建強大的監控技術或擴大現有監控工作。此外,不建議在高風險領域使用該模型,因為其準確性缺陷可能導致嚴重的後果。
評估使用
- 主要用戶:主要面向研究當前模型的魯棒性、泛化能力、性能、偏差和侷限性的AI研究人員。同時,對於開發者,尤其是英語語音識別領域的開發者,Whisper也是一個潛在有用的ASR解決方案。
- 使用建議:強烈建議用戶在特定上下文和領域中對模型進行充分評估後再進行部署。特別要注意,不要在未經個人同意的情況下轉錄其錄音,也不要將模型用於主觀分類任務。不建議在高風險決策領域使用該模型。
🔧 技術細節
模型差異
Whisper large-v3
與之前的大型模型具有相同的架構,但有以下細微差異:
- 輸入使用128個梅爾頻率 bins,而不是80個。
- 新增了粵語的語言標記。
訓練過程
large-v3
模型在100萬小時的弱標記音頻和400萬小時使用Whisper large-v2
收集的偽標記音頻上進行訓練,訓練了2.0個週期。
速度和內存優化
- Flash Attention:如果GPU支持,建議使用Flash-Attention 2,可通過安裝Flash Attention並在
from_pretrained
中傳遞use_flash_attention_2=True
來啟用。 - Torch Scale-Product-Attention (SDPA):如果GPU不支持Flash Attention,建議使用BetterTransformers,通過安裝
optimum
並將模型轉換為“BetterTransformer”模型來使用。
📄 許可證
本項目採用Apache-2.0許可證。
BibTeX引用
@misc{radford2022whisper,
doi = {10.48550/ARXIV.2212.04356},
url = {https://arxiv.org/abs/2212.04356},
author = {Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
title = {Robust Speech Recognition via Large-Scale Weak Supervision},
publisher = {arXiv},
year = {2022},
copyright = {arXiv.org perpetual, non-exclusive license}
}
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