模型概述
模型特點
模型能力
使用案例
🚀 NB-Whisper Large (候選版本)
NB-Whisper Large 是挪威國家圖書館精心研發的一系列用於自動語音識別(ASR)和語音翻譯的前沿模型。該系列模型基於 OpenAI的Whisper 開發,每個模型均經過250,000步訓練,使用了包含800萬個樣本的多樣化數據集,這些樣本由30秒長的對齊音頻片段組成,總計達到驚人的66,000小時語音數據。
🚀 快速開始
在線演示
你可以通過本頁面右側的HuggingFace推理API直接試用這些模型。請注意,模型首次加載時需要一些時間,且運行時CPU性能有限,可能會導致速度較慢。為提升體驗,我們臨時將部分模型部署在TPU上運行數天,這將顯著提高其性能。你可以在 主頁 的 Spaces 部分進行探索。
使用HuggingFace進行本地部署
另外,你也可以在本地運行這些模型。其中,Tiny、Base和Small模型針對CPU執行進行了優化;而Medium和Large模型,我們建議使用配備GPU的系統以確保高效處理。如果你已在機器上安裝了 Python,那麼使用HuggingFace的Transformers來設置和使用這些模型將非常簡單。以下是使用 示例mp3文件 的實際演示:
# 下載示例文件
$ wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/king.mp3
# 安裝必要的庫
$ pip install transformers>=4.35.2
完成上述步驟後,你可以在Python中運行以下代碼:
from transformers import pipeline
# 加載模型
asr = pipeline("automatic-speech-recognition", "NbAiLabBeta/nb-whisper-large")
# 進行轉錄
asr("king.mp3", generate_kwargs={'task': 'transcribe', 'language': 'no'})
預期輸出
{
{'text': ' Nordmenn er nordlendinger, trøndere, sørlendinger og folk fra alle andre regioner. Nordmenn er også innvandret fra Afghanistan, Pakistan, Polen, Sverige, Somalia og Syria. Det er ikke alltid så lett å si hvor vi er fra, hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra.'}
}
Whisper CPP
Whisper CPP是Whisper模型的C++實現,它在提供相同功能的同時,還具備C++的高效性和性能優化優勢。這使得可以將任何Whisper模型嵌入到二進制文件中,便於開發實際應用。不過,使用它需要對編譯C++程序有一定的瞭解。其 主頁 提供瞭如何構建應用程序的示例,包括即時轉錄。
我們已將該模型轉換為Whisper CPP二進制文件使用的ggml格式模型。你可以 此處 下載該文件,同時也提供了 q5_0
量化版本 此處。
# 下載並編譯whisper.cpp
$ git clone --depth 1 https://github.com/ggerganov/whisper.cpp --branch v1.5.1
$ cd whisper.cpp/
$ make
# 需要將音頻轉換為WAV格式,因為whisper.cpp僅支持該格式
$ wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/king.mp3
$ ffmpeg -i king.mp3 -ar 16000 -ac 1 -c:a pcm_s16le king.wav
# 從本網站下載兩個ggml文件
wget -N https://huggingface.co/NbAiLabBeta/nb-whisper-large/resolve/main/ggml-model.bin -O models/nb-large-ggml-model.bin
wget -N https://huggingface.co/NbAiLabBeta/nb-whisper-large/resolve/main/ggml-model-q5_0.bin -O models/nb-large-ggml-model-q5_0.bin
# 使用f16默認模型運行
$ ./main -l no -m models/nb-large-ggml-model.bin king.wav
# 或者使用量化版本運行
$ ./main -l no -m models/nb-large-ggml-model-q5_0.bin king.wav
WhisperX和說話人分離
說話人分離是自然語言處理和自動語音識別中的一項技術,用於識別和分離音頻記錄中的不同說話人。它根據說話人對音頻進行分段,從而提高會議或電話轉錄的質量。我們發現 WhisperX 是使用我們的模型進行語音說話人分離的最簡單方法。此外,WhisperX使用基於音素的Wav2Vec模型來改進時間戳的對齊。截至2023年12月,它還原生支持使用nb-wav2vec模型。目前,它使用 PyAnnote-audio 進行實際的說話人分離。該軟件包有相當嚴格的許可證,你需要同意用戶條款。請按照以下說明操作:
# 按照https://github.com/m-bain/whisperX上的安裝說明進行操作
# 確保你有HuggingFace賬戶並已同意pyannote條款
# 登錄(或在命令行中提供HF令牌)
huggingface-cli login
# 下載測試文件
wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/knuthamsun.mp3
# 可選操作。如果你遇到不支持挪威語的問題,請執行以下操作
pip uninstall whisperx && pip install git+https://github.com/m-bain/whisperx.git@8540ff5985fceee764acbed94f656063d7f56540
# 轉錄測試文件。所有轉錄結果將保存在mp3文件所在的目錄中
whisperx knuthamsun.mp3 --model NbAiLabBeta/nb-whisper-large --language no --diarize
你也可以從Python運行WhisperX。請查看 WhisperX主頁 上的說明。
API
有關通過簡單API訪問模型的說明包含在Spaces下的演示中。請注意,這些演示是臨時的,僅在幾周內可用。
✨ 主要特性
模型系列豐富
提供了從Tiny到Large不同規模的模型,以滿足不同場景的需求,各模型參數和鏈接如下:
模型大小 | 參數數量 | 模型鏈接 |
---|---|---|
Tiny | 39M | NB-Whisper Tiny |
Base | 74M | NB-Whisper Base |
Small | 244M | NB-Whisper Small |
Medium | 769M | NB-Whisper Medium |
Large | 1550M | NB-Whisper Large |
專業模型變體
除了適用於大多數轉錄任務的主模型外,還提供了兩種專業的模型變體,它們是在主模型基礎上額外訓練250步得到的,可能更適合特定的使用場景:
- 逐字版本:這種小寫變體更加忠實於原文,適用於需要詳細轉錄的任務,如語言分析。
- 語義版本:該變體不太注重逐字準確性,但能捕捉內容的核心,非常適合會議記錄和字幕製作。
各模型大小對應的專業變體鏈接如下:
模型大小 | 參數數量 | 逐字版本 | 語義版本 |
---|---|---|---|
Tiny | 39M | Tiny - 逐字 | Tiny - 語義 |
Base | 74M | Base - 逐字 | Base - 語義 |
Small | 244M | Small - 逐字 | Small - 語義 |
Medium | 769M | Medium - 逐字 | Medium - 語義 |
Large | 1550M | Large - 逐字 | Large - 語義 |
📦 安裝指南
使用HuggingFace進行本地部署
如果你已在機器上安裝了 Python,那麼使用HuggingFace的Transformers來設置和使用這些模型將非常簡單。以下是使用 示例mp3文件 的實際演示:
# 下載示例文件
$ wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/king.mp3
# 安裝必要的庫
$ pip install transformers>=4.35.2
Whisper CPP
我們已將該模型轉換為Whisper CPP二進制文件使用的ggml格式模型。你可以 此處 下載該文件,同時也提供了 q5_0
量化版本 此處。
# 下載並編譯whisper.cpp
$ git clone --depth 1 https://github.com/ggerganov/whisper.cpp --branch v1.5.1
$ cd whisper.cpp/
$ make
# 需要將音頻轉換為WAV格式,因為whisper.cpp僅支持該格式
$ wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/king.mp3
$ ffmpeg -i king.mp3 -ar 16000 -ac 1 -c:a pcm_s16le king.wav
# 從本網站下載兩個ggml文件
wget -N https://huggingface.co/NbAiLabBeta/nb-whisper-large/resolve/main/ggml-model.bin -O models/nb-large-ggml-model.bin
wget -N https://huggingface.co/NbAiLabBeta/nb-whisper-large/resolve/main/ggml-model-q5_0.bin -O models/nb-large-ggml-model-q5_0.bin
WhisperX和說話人分離
請按照以下說明使用WhisperX進行說話人分離:
# 按照https://github.com/m-bain/whisperX上的安裝說明進行操作
# 確保你有HuggingFace賬戶並已同意pyannote條款
# 登錄(或在命令行中提供HF令牌)
huggingface-cli login
# 下載測試文件
wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/knuthamsun.mp3
# 可選操作。如果你遇到不支持挪威語的問題,請執行以下操作
pip uninstall whisperx && pip install git+https://github.com/m-bain/whisperx.git@8540ff5985fceee764acbed94f656063d7f56540
💻 使用示例
基礎用法
from transformers import pipeline
# 加載模型
asr = pipeline("automatic-speech-recognition", "NbAiLabBeta/nb-whisper-large")
# 進行轉錄
asr("king.mp3", generate_kwargs={'task': 'transcribe', 'language': 'no'})
高級用法
長音頻轉錄
# 長音頻轉錄
asr("king.mp3", chunk_length_s=28, generate_kwargs={'task': 'transcribe', 'language': 'no'})
提高準確性
# 通過設置波束大小為5來提高準確性
asr("king.mp3", chunk_length_s=28, return_timestamps=True, generate_kwargs={'num_beams': 5, 'task': 'transcribe', 'language': 'no'})
返回時間戳
# 返回句子時間戳
asr("king.mp3", chunk_length_s=28, return_timestamps=True, generate_kwargs={'task': 'transcribe', 'language': 'no'})
# 返回單詞級時間戳
asr("king.mp3", chunk_length_s=28, return_timestamps="word", generate_kwargs={'task': 'transcribe', 'language': 'no'})
轉錄為其他語言
# 轉錄為尼諾斯克語
asr("king.mp3", chunk_length_s=28, generate_kwargs={'task': 'transcribe', 'language': 'nn'})
# 轉錄為英語
asr("king.mp3", chunk_length_s=28, generate_kwargs={'task': 'transcribe', 'language': 'en'})
預期輸出
長音頻轉錄:
{
{'text': ' Nordmenn er nordlendinger, trøndere, sørlendinger og folk fra alle andre regioner. Nordmenn er også innvandret fra Afghanistan, Pakistan, Polen, Sverige, Somalia og Syria. Det er ikke alltid så lett å si hvor vi er fra, hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra, hvilken nasjonalitet vi tilhører. Det vi kaller hjem, er der hjertet vårt er, og det kan ikke alltid plasseres innenfor landegrenser. Nordmenn er jenter som er glad i jenter, gutter som er glad i gutter, og jenter og gutter som er glad i hverandre. Nordmenn trommer på Gud, Allah, Altet og ingenting. Nordmenn liker Grieg, Kygo, Helbilis og Kari Bremnes. Med andre ord, Norge er dere. Norge er oss. Mitt største håp for Norge er at vi skal klare å ta vare på hverandre, at vi skal bygge dette landet videre på tillit, fellesskap og raushet.'}
}
時間戳:
{
{'text': ' Nordmenn er nordlendinger, trøndere, sørlendinger og folk fra alle andre regioner. Nordmenn er også innvandret fra Afghanistan, Pakistan, Polen, Sverige, Somalia og Syria. Det er ikke alltid så lett å si hvor vi er fra, hvilken nasjonalitet vi er fra. Hvilken nasjonalitet vi er fra. hvilken nasjonalitet vi tilhører. Det vi kaller hjem, er der hjertet vårt er, og det kan ikke alltid plasseres innenfor landegrenser. Nordmenn er jenter som er glad i jenter, gutter som er glad i gutter, og jenter og gutter som er glad i hverandre. Nordmenn trommer på Gud, Allah, Altet og ingenting. Nordmenn liker Grieg, Kygo, Helbiles og Kari Bremnes. Med andre ord, Norge er dere. Norge er oss. Mitt største håp for Norge er at vi skal klare å ta vare på hverandre, at vi skal bygge dette landet videre på tillit, fellesskap og raushet.',
'chunks': [{'timestamp': (0.0, 5.46),
'text': ' Nordmenn er nordlendinger, trøndere, sørlendinger'},
{'timestamp': (5.52, 8.68), 'text': ' og folk fra alle andre regioner.'},
{'timestamp': (8.68, 16.64),
'text': ' Nordmenn er også innvandret fra Afghanistan, Pakistan, Polen, Sverige, Somalia og Syria.'},
{'timestamp': (16.64, 13.3),
'text': ' Det er ikke alltid så lett å si hvor vi er fra, hvilken nasjonalitet vi er fra.'},
{'timestamp': (13.32, 30.28),
'text': ' Hvilken nasjonalitet vi er fra. hvilken nasjonalitet vi tilhører.'},
{'timestamp': (32.52, 39.16),
'text': ' Det vi kaller hjem, er der hjertet vårt er, og det kan ikke alltid plasseres'},
{'timestamp': (39.16, 42.0), 'text': ' innenfor landegrenser.'},
{'timestamp': (42.0, 46.74),
'text': ' Nordmenn er jenter som er glad i jenter, gutter som er glad i gutter,'},
{'timestamp': (46.74, 51.12),
'text': ' og jenter og gutter som er glad i hverandre.'},
{'timestamp': (51.16, 57.42),
'text': ' Nordmenn trommer på Gud, Allah, Altet og ingenting.'},
{'timestamp': (57.42, 64.3),
'text': ' Nordmenn liker Grieg, Kygo, Helbiles og Kari Bremnes.'},
{'timestamp': (64.34, 71.24),
'text': ' Med andre ord, Norge er dere. Norge er oss.'},
{'timestamp': (71.24, 78.04),
'text': ' Mitt største håp for Norge er at vi skal klare å ta vare på hverandre,'},
{'timestamp': (78.12, 84.68),
'text': ' at vi skal bygge dette landet videre på tillit, fellesskap og raushet.'}]}
}
單詞級時間戳:
{
{"text": "Nordmenn er nordlendinger, trøndere, sørlendinger og folk fra alle andre regioner. Nordmenn er også innvandret fra Afghanistan, Pakistan, Polen, Sverige, Somalia og Syria. Det er ikke alltid så lett å si hvor vi er fra, hvilken nasjonalitet vi tilhører. Det vi kaller hjem, er der hjertet vårt er, og det kan ikke alltid plasseres innenfor landegrenser. Nordmenn er jenter som er glad i jenter, gutter som er glad i gutter, og jenter og gutter som er glad i hverandre. Nordmenn trommer på Gud, Allah, Altet og ingenting. Nordmenn liker Grieg, Kygo, Helbilis og Kari Bremnes. Med andre ord, Norge er dere. Norge er oss. Mitt største håp for Norge er at vi skal klare å ta vare på hverandre, at vi skal bygge dette landet videre på tillit, fellesskap og raushet.",
"chunks": [
{"text": "Nordmenn", "timestamp": [0.72, 1.42]},
{"text": "er", "timestamp": [1.42, 1.74]},
// ... more chunks ...
{"text": "raushet.", "timestamp": [83.1, 84.88]}
]
}
}
尼諾斯克語:
{
{"text": "Nordmenn er nordlendingar, trøndarar, sørlendingar og folk frå alle andre regionar. Nordmenn er også innvandra frå Afghanistan, Pakistan, Polen, Sverige, Somalia og Syria. Det er ikkje alltid så lett å seie kvar vi er frå, kva nasjonalitet vi tilhøyrer. Det vi kallar heim, er der hjartet vårt er, og det kan ikkje alltid plasserast innanfor landegrenser. Nordmenn er jenter som er glad i jenter, gutar som erade i gutar, og jenter og gutar som er glade i kvarandre. Nordmenn trommar på Gud, Allah, Altet og ingenting. Nordmenn liker Grieg, Kygo, Helbiles og Kari Bremnes. Med andre ord, Noreg er dere! Noreg er oss. Mitt største håp for Noreg er at vi skal klare å ta vare på kvarandre, at vi skal byggje dette landet vidare på tillit, fellesskap og raushet."}
}
英語:
{
{"text": "Norwegians are Norwegians, trønders, southerners and people from all other regions. Norwegians are also invaded from Afghanistan, Pakistan, Poland, Sweden, Somalia and Suria. It is not always so easy to say where we are from, what nationality we belong to. What we call home is where our heart is, and it cannot always be placed within national borders. Norwegians are girls who like girls, boys who like boys, and girls and boys who like each other. Norwegians thrump on God, Allah, Altet and nothing. Norwegians like Grieg, Kygo, Helbilis and Kari Bremnes. In other words, Norway is you. Norway is us. My biggest hope for Norway is that we should be able to take care of each other, that we should build this country on trust, community and generosity."}
}
📚 詳細文檔
模型描述
屬性 | 詳情 |
---|---|
開發方 | NB AI-Lab |
共享方 | NB AI-Lab |
模型類型 | whisper |
支持語言 | 挪威語、挪威書面語、新挪威語、英語 |
許可證 | Apache 2.0 |
基礎模型 | openai/whisper-large |
代碼倉庫 | https://github.com/NbAiLab/nb-whisper/ |
論文 | 即將發佈 |
演示 | 請查看本頁面的Spaces部分 |
訓練數據
訓練數據來自Språkbanken和挪威國家圖書館的數字館藏,包括:
- NST挪威ASR數據庫(16 kHz)及其對應數據集
- Språkbanken轉錄的挪威議會演講
- 電視廣播(NRK)字幕(NLN數字館藏)
- 有聲讀物(NLN數字館藏)
下游應用
這些模型,尤其是較小的模型,可能偶爾會出現幻覺現象,並且可能會遺漏部分轉錄內容。它們旨在將口語轉換為語法正確的書面句子,可能並非總是逐字翻譯。我們為希望獲得不同轉錄風格的用戶製作了兩種額外的模型變體。我們鼓勵用戶親自嘗試這些模型以獲得更好的理解。
偏差、風險和侷限性
在未進行充分風險評估和緩解的情況下使用這些模型可能被視為不負責任的行為。它們可能包含偏差或其他不良扭曲。部署這些模型或將其集成到系統或服務中的用戶有責任減輕風險並遵守適用的AI法規。作為模型所有者,挪威國家圖書館對第三方使用這些模型所產生的任何結果不承擔責任。
軟件
該模型使用Jax/Flax進行訓練,並轉換為PyTorch、Tensorflow、whisper.cpp和ONXX格式。這些格式可在 文件和版本
中找到。我們歡迎將其轉換為其他格式的請求。所有訓練代碼和腳本均根據Apache許可證2.0在GitHub倉庫 nb-whisper 中發佈。
引用與貢獻者
NB-Whisper Large模型是由挪威國家圖書館的Per Egil Kummervold(@pere)領導的NoSTram項目的成果。主要貢獻者包括Javier de la Rosa(@versae)、Freddy Wetjen(@freddyw)和Rolv-Arild Braaten(@Rolv-Arild)。在Svein Arne Brygfjeld(@Brygfjeld)的指導下,NB AI-Lab支持了該項目的順利完成。關於我們的過程和發現的詳細論文即將發佈。
免責聲明
本倉庫中發佈的模型旨在用於通用目的,並可供第三方使用。這些模型可能存在偏差和/或其他不良扭曲。第三方在部署或提供包含這些模型的系統和/或服務時,應自行承擔相應責任。
⚠️ 重要提示
這些模型目前為候選版本,我們正處於測試的最後階段。如果一切順利,我們計劃在本月晚些時候正式發佈這些模型。
💡 使用建議
- 對於在線演示,由於初始加載和CPU性能限制,可能會較慢,可在接下來幾天嘗試TPU部署的版本以提升體驗。
- 本地部署時,Medium和Large模型建議使用配備GPU的系統以確保高效處理。
- 使用Whisper CPP時,需要對編譯C++程序有一定了解。
- 使用WhisperX進行說話人分離時,需確保有HuggingFace賬戶並同意pyannote條款。



