模型概述
模型特點
模型能力
使用案例
🚀 挪威NB-Whisper Tiny逐字稿模型(候選版本)
挪威NB-Whisper Tiny逐字稿模型 由挪威國家圖書館自豪地開發。NB-Whisper是一系列專為自動語音識別(ASR)和語音翻譯設計的前沿模型。這些模型基於OpenAI的Whisper構建,每個模型都經過250,000步的訓練,使用了包含800萬個樣本的多樣化數據集。這些樣本由30秒長的對齊音頻片段組成,總計達到驚人的66,000小時語音數據。欲深入瞭解我們的訓練方法和數據集構成,請關注我們即將發佈的文章。
✨ 主要特性
- 微調版本:該模型在基礎模型上額外訓練了200步,輸出的文本僅為小寫且無標點符號,逐字性更強,不會嘗試糾正文本中的語法錯誤。
- 多語言支持:支持挪威語、挪威書面語、挪威新挪威語和英語。
- 多種模型尺寸:提供Tiny、Base、Small、Medium和Large等不同尺寸的模型,以滿足不同場景的需求。
- 專業變體:除了主模型,還提供逐字稿版本和語義版本,適用於不同的轉錄需求。
📦 安裝指南
本地使用HuggingFace
如果你想在本地運行模型,Tiny、Base和Small模型經過優化,可在CPU上高效運行;而Medium和Large模型建議使用配備GPU的系統以確保處理效率。只要你的機器上安裝了Python,就可以使用HuggingFace的Transformers輕鬆設置和使用這些模型。以下是具體步驟:
# 下載示例文件
$ wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/king.mp3
# 安裝必要的庫
$ pip install transformers>=4.35.2
💻 使用示例
基礎用法
from transformers import pipeline
# 加載模型
asr = pipeline("automatic-speech-recognition", "NbAiLabBeta/nb-whisper-tiny-verbatim")
# 轉錄
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'})
📚 詳細文檔
模型信息
屬性 | 詳情 |
---|---|
模型類型 | whisper |
語言 | 挪威語、挪威書面語、挪威新挪威語、英語 |
許可證 | Apache 2.0 |
訓練基礎模型 | openai/whisper-tiny |
代碼倉庫 | https://github.com/NbAiLab/nb-whisper/ |
論文 | 即將發佈 |
演示 | 請查看本頁面的Spaces部分 |
模型使用方式
在線演示
你可以通過本頁面右側的HuggingFace推理API直接試用模型。需要注意的是,模型首次加載時需要一定時間,並且運行時CPU容量有限,可能會比較慢。為了提升體驗,我們暫時將部分模型部署在TPU上運行幾天,性能將顯著提升。你可以在主頁的Spaces部分找到這些模型。
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-tiny/resolve/main/ggml-model.bin -O models/nb-tiny-ggml-model.bin
wget -N https://huggingface.co/NbAiLabBeta/nb-whisper-tiny/resolve/main/ggml-model-q5_0.bin -O models/nb-tiny-ggml-model-q5_0.bin
# 使用f16默認模型運行
$ ./main -l no -m models/nb-tiny-ggml-model.bin king.wav
# 或者使用量化版本
$ ./main -l no -m models/nb-tiny-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-tiny-verbatim --language no --diarize
你也可以從Python中運行WhisperX。請查看WhisperX主頁上的說明。
API
通過簡單API訪問模型的說明包含在Spaces部分的演示中。請注意,這些演示是臨時的,僅在幾周內可用。
訓練數據
訓練數據來自Språkbanken和挪威國家圖書館的數字館藏,包括:
- NST挪威ASR數據庫(16 kHz)及其相應的數據集
- Språkbanken轉錄的挪威議會演講
- 電視廣播(NRK)字幕(挪威國家圖書館數字館藏)
- 有聲讀物(挪威國家圖書館數字館藏)
下游應用
這些模型,尤其是較小的模型,可能偶爾會出現幻覺現象,並且可能會遺漏部分轉錄內容。它們旨在將口語轉換為語法正確的書面句子,可能並非總是逐字翻譯。我們為希望獲得不同轉錄風格的用戶提供了兩種額外的模型變體。我們鼓勵用戶親自嘗試這些模型,以獲得更好的理解。
🔧 技術細節
該模型基於OpenAI的Whisper模型進行微調,使用Jax/Flax進行訓練,並轉換為PyTorch、Tensorflow、whisper.cpp和ONXX格式。所有訓練代碼和腳本均在GitHub倉庫nb-whisper中以Apache License 2.0發佈。
📄 許可證
本項目採用Apache 2.0許可證。
引用與貢獻者
NB-Whisper Tiny Verbatim模型是由挪威國家圖書館的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支持了該項目的順利完成。關於我們的過程和發現的詳細論文即將發佈。
免責聲明
本倉庫中發佈的模型僅供通用目的使用,並可供第三方使用。這些模型可能存在偏差和/或其他不良失真。當第三方部署或向其他方提供使用這些模型(或基於這些模型的系統)的系統和/或服務,或成為這些模型的用戶時,他們有責任減輕使用過程中產生的風險,並遵守適用的AI法規。挪威國家圖書館作為模型所有者,對第三方使用這些模型產生的任何結果不承擔責任。
致謝
我們感謝Google TPU Research Cloud提供的訓練資源,感謝Google Cloud提供的翻譯信用,以及HuggingFace的Sanchit Ghandi提供的技術支持。特別感謝Språkbanken的Per Erik Solberg在Stortinget語料庫方面的合作。
聯繫我們
如果您有反饋、技術問題或合作意向,請聯繫 ailab@nb.no。如果您計劃在研究中使用該模型,請聯繫我們獲取即將發佈的論文的最新信息,以便進行引用。



