模型概述
模型特點
模型能力
使用案例
🚀 挪威NB-Whisper中等逐字稿模型(候選版本)
挪威國家圖書館自豪地推出了 挪威語NB-Whisper中等逐字稿模型。NB-Whisper是一系列專為自動語音識別(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-medium-verbatim")
# 進行轉錄
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-medium/resolve/main/ggml-model.bin -O models/nb-medium-ggml-model.bin
wget -N https://huggingface.co/NbAiLabBeta/nb-whisper-medium/resolve/main/ggml-model-q5_0.bin -O models/nb-medium-ggml-model-q5_0.bin
# 使用f16默認模型運行
$ ./main -l no -m models/nb-medium-ggml-model.bin king.wav
# 或者使用量化版本運行
$ ./main -l no -m models/nb-medium-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-medium-verbatim --language no --diarize
您也可以從Python運行WhisperX。請查看WhisperX主頁上的說明。
API
通過簡單API訪問模型的說明包含在Spaces下的演示中。請注意,這些演示是臨時的,僅在幾周內可用。
✨ 主要特性
微調的逐字稿模型
該模型在以下基礎模型上額外訓練了200步,使其僅輸出小寫文本且無標點符號。它更加逐字逐句,不會嘗試糾正文本中的語法錯誤。
模型系列
模型大小 | 參數數量 | 模型鏈接 |
---|---|---|
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 - verbatim | Tiny - semantic |
Base | 74M | Base - verbatim | Base - semantic |
Small | 244M | Small - verbatim | Small - semantic |
Medium | 769M | Medium - verbatim | Medium - semantic |
Large | 1550M | Large - verbatim | Large - semantic |
📦 安裝指南
使用HuggingFace進行本地設置
# 下載示例文件
$ wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/king.mp3
# 安裝必要的庫
$ pip install transformers>=4.35.2
Whisper CPP
# 下載並編譯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-medium/resolve/main/ggml-model.bin -O models/nb-medium-ggml-model.bin
wget -N https://huggingface.co/NbAiLabBeta/nb-whisper-medium/resolve/main/ggml-model-q5_0.bin -O models/nb-medium-ggml-model-q5_0.bin
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-medium-verbatim")
# 進行轉錄
asr("king.mp3", generate_kwargs={'task': 'transcribe', 'language': 'no'})
高級用法
長轉錄
asr("king.mp3", chunk_length_s=28, generate_kwargs={'task': 'transcribe', 'language': 'no'})
提高準確性
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-medium |
代碼倉庫 | https://github.com/NbAiLab/nb-whisper/ |
論文 | 即將發佈 |
演示 | 請查看本頁面的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中等逐字稿模型是由挪威國家圖書館的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支持了該項目的順利完成。關於我們的過程和發現的詳細論文即將發佈。
免責聲明
本倉庫中發佈的模型旨在用於通用目的,並可供第三方使用。這些模型可能存在偏差和/或其他不良扭曲。當第三方使用這些模型(或基於這些模型的系統)部署或向其他方提供系統和/或服務,或成為這些模型的用戶時,他們應注意,減輕使用這些模型所產生的風險並遵守適用法規(包括有關人工智能使用的法規)是他們的責任。在任何情況下,模型所有者(挪威國家圖書館)均不對第三方使用這些模型所產生的任何結果承擔責任。
致謝
我們感謝Google TPU研究雲提供的訓練資源,感謝Google Cloud提供的翻譯信用額度,以及HuggingFace的Sanchit Ghandi提供的技術支持。特別感謝Språkbanken的Per Erik Solberg在Stortinget語料庫方面的合作。
聯繫我們
如果您有反饋、技術問題或合作意向,請聯繫 ailab@nb.no。如果您計劃在研究中使用此模型,請與我們聯繫,以獲取即將發佈的論文的最新信息,用於引用目的。
📄 許可證
本項目採用Apache 2.0許可證。



