模型简介
模型特点
模型能力
使用案例
🚀 挪威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许可证。



