模型简介
模型特点
模型能力
使用案例
🚀 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条款。



