模型概述
模型特點
模型能力
使用案例
🚀 NB-Whisper Base
挪威NB-Whisper Base模型 由挪威國家圖書館自豪地開發。NB-Whisper是一系列前沿的模型,專為自動語音識別(ASR)和語音翻譯而設計。這些模型基於 OpenAI的Whisper 工作成果。該系列的每個模型都經過250,000步的訓練,使用了包含800萬個樣本的多樣化數據集。這些樣本由時長為30秒的對齊音頻片段組成,總計達到驚人的66,000小時的語音數據。欲深入瞭解我們的訓練方法和數據集構成,請關注我們即將發佈的文章。
✨ 主要特性
模型系列
模型大小 | 參數數量 | 模型鏈接 |
---|---|---|
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 - semantic |
Base | 74M | Base - semantic |
Small | 244M | Small - semantic |
Medium | 769M | Medium - semantic |
Large | 1550M | Large - semantic |
模型描述
屬性 | 詳情 |
---|---|
開發者 | NB AI-Lab |
共享者 | NB AI-Lab |
模型類型 | whisper |
支持語言(NLP) | 挪威語、書面挪威語、新挪威語、英語 |
許可證 | Apache 2.0 |
訓練基礎模型 | openai/whisper-base |
代碼倉庫 | https://github.com/NbAiLab/nb-whisper/ |
論文 | 即將發佈 |
演示 | 查看本頁面的Spaces部分 |
🚀 快速開始
在線演示
你可以通過本頁面右側的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-base")
# 轉錄
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.'}
}
擴展HuggingFace使用
從上述輸出可以看出,視頻時長超過30秒時,輸出末尾會出現多次重複。通過傳遞 chunk_lengt_s
參數,我們可以轉錄更長的文件。根據經驗,將該參數設置為28秒而非默認的30秒,效果會稍好一些。如果可能,我們還建議將束搜索大小設置為5,這將大大提高準確性,但會稍微增加時間和內存消耗。以下示例展示瞭如何轉錄為英語或新挪威語,以及如何獲取句子和單詞的時間戳。
# 長轉錄
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]},
// ... 更多塊 ...
{"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."}
}
Whisper CPP
Whisper CPP是Whisper模型的C++實現,它在提供相同功能的同時,還具備C++的高效性和性能優化。這使得可以將任何Whisper模型嵌入到二進制文件中,便於開發實際應用。不過,使用它需要對編譯C++程序有一定的瞭解。其 主頁 提供瞭如何構建應用程序的示例,包括即時轉錄。
我們已經將該模型轉換為Whisper CPP二進制文件使用的ggml格式模型。你可以 此處 下載該文件,同時也提供了 量化版本。
# 下載並編譯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/NbAiLab/nb-whisper-base/resolve/main/ggml-model.bin -O models/nb-base-ggml-model.bin
wget -N https://huggingface.co/NbAiLab/nb-whisper-base/resolve/main/ggml-model-q5_0.bin -O models/nb-base-ggml-model-q5_0.bin
# 使用f16默認模型運行
$ ./main -l no -m models/nb-base-ggml-model.bin king.wav
# 或者使用量化版本
$ ./main -l no -m models/nb-base-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-base --language no --diarize
你也可以從Python運行WhisperX。請查看 WhisperX主頁 上的說明。
API
通過簡單API訪問模型的說明包含在Spaces部分的演示中。請注意,這些演示是臨時的,僅在幾周內可用。
📚 詳細文檔
訓練數據
訓練數據來自Språkbanken和挪威國家圖書館的數字館藏,包括:
- NST挪威語ASR數據庫(16 kHz)及其對應數據集
- Språkbanken轉錄的挪威議會演講
- 電視廣播(NRK)字幕(挪威國家圖書館數字館藏)
- 有聲讀物(挪威國家圖書館數字館藏)
下游應用
這些模型,尤其是較小的模型,偶爾可能會出現幻覺,並且可能會遺漏部分轉錄內容。它們旨在將口語轉換為語法正確的書面句子,可能並非總是逐字翻譯。我們為希望採用不同轉錄風格的用戶提供了兩個額外的模型變體。我們鼓勵用戶親自嘗試這些模型以獲得更好的理解。
偏差、風險和侷限性
在未進行充分風險評估和緩解的情況下使用這些模型可能被視為不負責任的行為。這些模型可能包含偏差或其他不良扭曲。部署這些模型或將其集成到系統或服務中的用戶有責任減輕風險並遵守適用的人工智能法規。作為模型所有者,挪威國家圖書館對第三方使用這些模型所產生的任何結果不承擔責任。
軟件
該模型使用Jax/Flax進行訓練,並轉換為PyTorch、Tensorflow、whisper.cpp和ONXX格式。這些格式的文件可在 文件和版本
部分獲取。我們歡迎將模型轉換為其他格式的請求。所有訓練代碼和腳本均根據Apache許可證2.0在GitHub倉庫 nb-whisper 中發佈。
引用與貢獻者
NB-Whisper Base模型是挪威國家圖書館的NoSTram項目的成果,該項目由Per Egil Kummervold(@pere)領導。主要貢獻者包括Javier de la Rosa(@versae)、Freddy Wetjen(@freddyw)和Rolv-Arild Braaten(@Rolv-Arild)。在Svein Arne Brygfjeld(@Brygfjeld)的指導下,NB AI-Lab支持了該項目的成功完成。關於我們的過程和發現的詳細論文即將發佈。
免責聲明
本倉庫中發佈的模型僅供通用目的使用,並可供第三方使用。這些模型可能存在偏差和/或其他不良扭曲。當第三方部署或向其他方提供使用這些模型(或基於這些模型的系統)的系統和/或服務,或成為這些模型的用戶時,他們有責任減輕使用這些模型所帶來的風險,並在任何情況下遵守適用的法規,包括有關人工智能使用的法規。在任何情況下,模型所有者(挪威國家圖書館)均不對第三方使用這些模型所產生的任何結果承擔責任。
致謝
我們感謝 Google TPU研究雲 提供的訓練資源,感謝Google Cloud提供的翻譯信用額度,以及HuggingFace的Sanchit Ghandi提供的技術支持。特別感謝Språkbanken的Per Erik Solberg在Stortinget語料庫方面的合作。
聯繫我們
如果你有反饋、技術問題或其他相關事宜,請聯繫我們。



