说明文档
nb-whisper-small (ONNX)
这是 NbAiLab/nb-whisper-small 的 ONNX 版本。它通过 此 Hugging Face Space 自动转换并上传。
使用 Transformers.js
请参阅 automatic-speech-recognition 的管道文档:https://huggingface.co/docs/transformers.js/api/pipelines#module_pipelines.AutomaticSpeechRecognitionPipeline
NB-Whisper Small
隆重介绍由挪威国家图书馆开发的 挪威语 NB-Whisper Small 模型。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-small
- 代码仓库: 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-small")
# 转录
asr("king.mp3", generate_kwargs={'task': 'transcribe', 'language': 'no'})
<details> <summary>预期输出</summary>
{
{'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.'}
}
</details>
HuggingFace 扩展用法
查看上面的输出,我们可以看到末尾有多次重复。这是因为视频长度超过 30 秒。通过传递 chunk_length_s 参数,我们可以转录更长的文件。我们的经验是将该值设置为 28 秒而不是默认的 30 秒会获得稍好的结果。如果可能,我们还建议将 beam 大小设置为 5。这大大提高了准确性,但需要更多时间且需要稍多的内存。以下示例还演示了如何转录为英语或尼诺斯克语,以及如何获取句子和单词的时间戳。
# 长音频转录
asr("king.mp3", chunk_length_s=28, generate_kwargs={'task': 'transcribe', 'language': 'no'})
# 通过将 beam 大小设置为 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'})
<details> <summary>预期输出</summary>
长音频转录:
{
{'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."}
}
</details>
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/NbAiLab/nb-whisper-small/resolve/main/ggml-model.bin -O models/nb-small-ggml-model.bin
wget -N https://huggingface.co/NbAiLab/nb-whisper-small/resolve/main/ggml-model-q5_0.bin -O models/nb-small-ggml-model-q5_0.bin
# 使用 f16 默认模型运行
$ ./main -l no -m models/nb-small-ggml-model.bin king.wav
# 或使用量化版本
$ ./main -l no -m models/nb-small-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 Token)
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-small --language no --diarize
您也可以从 Python 运行 WhisperX。请查看 WhisperX 主页 上的说明。
API
通过简单 API 访问模型的说明包含在 Spaces 下的演示中。请注意,这些演示是临时的,只会提供几周时间。
训练数据
训练数据来自 Språkbanken 和挪威国家图书馆的数字馆藏,包括:
- NST 挪威语 ASR 数据库(16 kHz)及其相应数据集
- Språkbanken 提供的挪威议会演讲转录
- 电视广播(NRK)字幕(NLN 数字馆藏)
- 有声读物(NLN 数字馆藏)
下游用途
这些模型,尤其是较小的模型,可能会偶尔出现幻觉并可能遗漏部分转录内容。它们旨在将口语转换为语法正确的书面句子,这可能并不总是逐字翻译。我们为想要不同转录风格的用户制作了两个额外的模型变体。我们鼓励用户亲自尝试这些模型,以获得更好的理解。
偏见、风险和局限性
在没有充分风险评估和缓解措施的情况下使用这些模型可能被认为是不负责任的。它们可能包含偏见或其他不良失真。部署这些模型或将其集成到系统或服务中的用户有责任缓解风险并遵守适用的 AI 法规。挪威国家图书馆作为模型所有者,不对第三方使用这些模型产生的任何结果承担责任。
软件
该模型使用 Jax/Flax 训练,并转换为 PyTorch、Tensorflow、whisper.cpp 和 ONNX 格式。这些可在 Files and versions 下找到。我们欢迎转换为其他格式的请求。所有训练代码和脚本均在 GitHub 仓库 nb-whisper 中以 Apache License 2.0 发布。
引用与贡献者
NB-Whisper Small 模型是由挪威国家图书馆的 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 Research Cloud 提供训练资源,感谢 Google Cloud 提供翻译积分,感谢 HuggingFace 的 Sanchit Ghandi 提供技术支持。特别感谢 Språkbanken 的 Per Erik Solberg 在 Stortinget 语料库方面的合作。
联系方式
如有反馈、技术问题或合作咨询,请联系 <a rel="noopener nofollow" href="mailto:ailab@nb.no">ailab@nb.no</a>。如果您计划将此模型纳入您的研究,请联系我们获取即将发表的论文的最新信息以便引用。
onnx-community/nb-whisper-small-ONNX
作者 onnx-community
创建时间: 2026-02-06 12:50:14+00:00
更新时间: 2026-02-06 12:50:53+00:00
在 Hugging Face 上查看