模型简介
模型特点
模型能力
使用案例
🚀 挪威NB-Whisper Tiny逐字稿模型(候选版本)
挪威NB-Whisper Tiny逐字稿模型 由挪威国家图书馆自豪地开发。NB-Whisper是一系列专为自动语音识别(ASR)和语音翻译设计的前沿模型。这些模型基于OpenAI的Whisper构建,每个模型都经过250,000步的训练,使用了包含800万个样本的多样化数据集。这些样本由30秒长的对齐音频片段组成,总计达到惊人的66,000小时语音数据。欲深入了解我们的训练方法和数据集构成,请关注我们即将发布的文章。
✨ 主要特性
- 微调版本:该模型在基础模型上额外训练了200步,输出的文本仅为小写且无标点符号,逐字性更强,不会尝试纠正文本中的语法错误。
- 多语言支持:支持挪威语、挪威书面语、挪威新挪威语和英语。
- 多种模型尺寸:提供Tiny、Base、Small、Medium和Large等不同尺寸的模型,以满足不同场景的需求。
- 专业变体:除了主模型,还提供逐字稿版本和语义版本,适用于不同的转录需求。
📦 安装指南
本地使用HuggingFace
如果你想在本地运行模型,Tiny、Base和Small模型经过优化,可在CPU上高效运行;而Medium和Large模型建议使用配备GPU的系统以确保处理效率。只要你的机器上安装了Python,就可以使用HuggingFace的Transformers轻松设置和使用这些模型。以下是具体步骤:
# 下载示例文件
$ wget -N https://github.com/NbAiLab/nb-whisper/raw/main/audio/king.mp3
# 安装必要的库
$ pip install transformers>=4.35.2
💻 使用示例
基础用法
from transformers import pipeline
# 加载模型
asr = pipeline("automatic-speech-recognition", "NbAiLabBeta/nb-whisper-tiny-verbatim")
# 转录
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'})
📚 详细文档
模型信息
属性 | 详情 |
---|---|
模型类型 | whisper |
语言 | 挪威语、挪威书面语、挪威新挪威语、英语 |
许可证 | Apache 2.0 |
训练基础模型 | openai/whisper-tiny |
代码仓库 | https://github.com/NbAiLab/nb-whisper/ |
论文 | 即将发布 |
演示 | 请查看本页面的Spaces部分 |
模型使用方式
在线演示
你可以通过本页面右侧的HuggingFace推理API直接试用模型。需要注意的是,模型首次加载时需要一定时间,并且运行时CPU容量有限,可能会比较慢。为了提升体验,我们暂时将部分模型部署在TPU上运行几天,性能将显著提升。你可以在主页的Spaces部分找到这些模型。
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-tiny/resolve/main/ggml-model.bin -O models/nb-tiny-ggml-model.bin
wget -N https://huggingface.co/NbAiLabBeta/nb-whisper-tiny/resolve/main/ggml-model-q5_0.bin -O models/nb-tiny-ggml-model-q5_0.bin
# 使用f16默认模型运行
$ ./main -l no -m models/nb-tiny-ggml-model.bin king.wav
# 或者使用量化版本
$ ./main -l no -m models/nb-tiny-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-tiny-verbatim --language no --diarize
你也可以从Python中运行WhisperX。请查看WhisperX主页上的说明。
API
通过简单API访问模型的说明包含在Spaces部分的演示中。请注意,这些演示是临时的,仅在几周内可用。
训练数据
训练数据来自Språkbanken和挪威国家图书馆的数字馆藏,包括:
- NST挪威ASR数据库(16 kHz)及其相应的数据集
- Språkbanken转录的挪威议会演讲
- 电视广播(NRK)字幕(挪威国家图书馆数字馆藏)
- 有声读物(挪威国家图书馆数字馆藏)
下游应用
这些模型,尤其是较小的模型,可能偶尔会出现幻觉现象,并且可能会遗漏部分转录内容。它们旨在将口语转换为语法正确的书面句子,可能并非总是逐字翻译。我们为希望获得不同转录风格的用户提供了两种额外的模型变体。我们鼓励用户亲自尝试这些模型,以获得更好的理解。
🔧 技术细节
该模型基于OpenAI的Whisper模型进行微调,使用Jax/Flax进行训练,并转换为PyTorch、Tensorflow、whisper.cpp和ONXX格式。所有训练代码和脚本均在GitHub仓库nb-whisper中以Apache License 2.0发布。
📄 许可证
本项目采用Apache 2.0许可证。
引用与贡献者
NB-Whisper Tiny Verbatim模型是由挪威国家图书馆的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支持了该项目的顺利完成。关于我们的过程和发现的详细论文即将发布。
免责声明
本仓库中发布的模型仅供通用目的使用,并可供第三方使用。这些模型可能存在偏差和/或其他不良失真。当第三方部署或向其他方提供使用这些模型(或基于这些模型的系统)的系统和/或服务,或成为这些模型的用户时,他们有责任减轻使用过程中产生的风险,并遵守适用的AI法规。挪威国家图书馆作为模型所有者,对第三方使用这些模型产生的任何结果不承担责任。
致谢
我们感谢Google TPU Research Cloud提供的训练资源,感谢Google Cloud提供的翻译信用,以及HuggingFace的Sanchit Ghandi提供的技术支持。特别感谢Språkbanken的Per Erik Solberg在Stortinget语料库方面的合作。
联系我们
如果您有反馈、技术问题或合作意向,请联系 ailab@nb.no。如果您计划在研究中使用该模型,请联系我们获取即将发布的论文的最新信息,以便进行引用。



