模型简介
模型特点
模型能力
使用案例
🚀 微调逐字记录模型
本模型在以下基础模型上额外训练了200步,这使得它仅输出小写文本,且无标点符号。它的逐字记录能力更强,不会尝试纠正文本中的语法错误。
🚀 挪威语NB - Whisper大模型(候选版本)
重要提示:这些模型目前处于候选发布阶段,我们正处于最后的测试阶段。如果一切顺利,我们计划在本月晚些时候正式发布这些模型。
挪威国家图书馆自豪地推出 挪威语NB - Whisper大模型。NB - Whisper是一系列专为自动语音识别(ASR)和语音翻译设计的前沿模型。这些模型基于OpenAI的Whisper开发。系列中的每个模型都经过250,000步的训练,使用了包含800万个样本的多样化数据集。这些样本由对齐的音频片段组成,每个片段时长30秒,总计达到惊人的66,000小时语音数据。欲深入了解我们的训练方法和数据集构成,请关注我们即将发布的文章。
模型大小 | 参数数量 | 模型链接 |
---|---|---|
微型(Tiny) | 3900万 | NB - Whisper微型 |
基础型(Base) | 7400万 | NB - Whisper基础型 |
小型(Small) | 2.44亿 | NB - Whisper小型 |
中型(Medium) | 7.69亿 | NB - Whisper中型 |
大型(Large) | 15.5亿 | NB - Whisper大型 |
✨ 专业模型
虽然主模型适用于大多数转录任务,但我们展示了如何轻松更改主模型的输出。以下模型是在上述主模型基础上额外训练250步得到的,可能更适合特定的使用场景:
- 逐字版本:这种小写变体更注重逐字记录,适用于需要详细转录的任务,如语言分析。
- 语义版本:此变体不太注重逐字准确性,但能捕捉内容的本质,非常适合会议记录和字幕制作。
模型大小 | 参数数量 | 逐字版本 | 语义版本 |
---|---|---|---|
微型(Tiny) | 3900万 | 微型 - 逐字 | 微型 - 语义 |
基础型(Base) | 7400万 | 基础型 - 逐字 | 基础型 - 语义 |
小型(Small) | 2.44亿 | 小型 - 逐字 | 小型 - 语义 |
中型(Medium) | 7.69亿 | 中型 - 逐字 | 中型 - 语义 |
大型(Large) | 15.5亿 | 大型 - 逐字 | 大型 - 语义 |
📚 模型描述
属性 | 详情 |
---|---|
开发者 | NB AI - Lab |
分享者 | NB AI - Lab |
模型类型 | whisper |
支持语言(NLP) | 挪威语、挪威书面语(Bokmål)、挪威新书面语(Nynorsk)、英语 |
许可证 | Apache 2.0 |
基础模型 | openai/whisper - large |
代码仓库 | https://github.com/NbAiLab/nb - whisper/ |
论文 | 即将发布 |
演示 | 查看本页面的Spaces部分 |
🚀 快速开始
在线演示
您可以通过本页面右侧的HuggingFace推理API直接试用这些模型。请注意,模型首次加载时需要一些时间,并且在有限的CPU容量下运行,速度可能较慢。为了提升您的体验,我们将在接下来的几天内临时在TPU上托管部分模型,这将显著提高其性能。您可以在主页的Spaces部分进行探索。
使用HuggingFace进行本地部署
或者,您也可以在本地运行这些模型。微型、基础型和小型模型针对CPU执行进行了优化。对于中型和大型模型,我们建议使用配备GPU的系统以确保高效处理。只要您的机器上安装了Python,使用HuggingFace的Transformers库来设置和使用这些模型就非常简单。有关实际演示,请参考使用此[示例mp3文件](https://github.com/NbAiLab/nb - whisper/raw/main/audio/king.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-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."
}
扩展HuggingFace使用
观察上述输出,我们发现末尾存在多次重复。这是因为视频时长超过了30秒。通过传递chunk_length_s
参数,我们可以转录更长的文件。根据经验,将其设置为28秒而非默认的30秒,效果会略好。如果可能的话,我们还建议将束搜索大小(beam size)设置为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格式模型。您可以[在此](blob/main/ggml - model.bin)下载该文件,还有一个q5_0
量化版本[在此](blob/main/ggml - model - q5_0.bin)可供下载。
# 我们可以下载并编译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](https://github.com/m - bain/whisperX)是使用我们的模型进行说话人分离的最简单方法。此外,WhisperX使用基于音素的Wav2Vec模型来改进时间戳的对齐。截至2023年12月,它还原生支持使用nb - wav2vec模型。该软件包的许可证较为严格,您需要同意用户条款。请按照以下说明操作。
# 遵循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-verbatim --language no --diarize
您也可以从Python中运行WhisperX。请查看[WhisperX主页](https://github.com/m - bain/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](https://github.com/NbAiLab/nb - whisper/)中发布。
📄 引用与贡献者
NB - Whisper大型模型是由挪威国家图书馆的Per Egil Kummervold(@pere)领导的NoSTram项目的成果。主要贡献者包括Javier de la Rosa(@versae)、Freddy Wetjen(@freddyw)和Rolv - Arild Braaten([@Rolv - Arild](https://huggingface.co/Rolv - Arild))。在Svein Arne Brygfjeld(@Brygfjeld)的指导下,NB AI - Lab支持了该项目的顺利完成。有关我们的过程和研究结果的详细论文即将发布。
免责声明
本仓库中发布的模型旨在用于通用目的,并可供第三方使用。这些模型可能存在偏差和/或其他不良失真。第三方在部署这些模型或将其集成到系统或服务中,或使用这些模型时,有责任减轻使用过程中产生的风险,并遵守适用的法规,包括人工智能使用相关法规。挪威国家图书馆作为模型所有者,对第三方使用这些模型所产生的任何结果不承担责任。
致谢
我们感谢Google TPU研究云提供的训练资源,感谢Google Cloud提供的翻译信用额度,以及HuggingFace的Sanchit Ghandi提供的技术支持。特别感谢Språkbanken的Per Erik Solberg在挪威议会语料库方面的合作。
联系我们
如果您有反馈、技术问题或合作意向,请联系 ailab@nb.no。如果您计划在研究中使用此模型,请联系我们以获取即将发布的论文的最新信息,以便进行引用。



