ONNX 模型库
返回模型

说明文档

T-one:俄语电话流式ASR系统

🚀 T-one 是一个高性能的俄语电话领域流式ASR管道。

T-one 为实时转录提供了完整的低延迟解决方案。它采用预训练的流式Conformer声学模型、自定义短语边界检测器和解码器,是生产环境中可直接使用的解决方案。它不仅提供预训练模型,还提供完整的推理、微调和部署工具集。

T-Software DC 开发,本项目是一个具有模块化组件的低延迟、高吞吐量ASR实用解决方案。

更多详情请参阅 GitHub仓库

目录

  1. 项目概述
  2. 质量基准
  3. 推理示例
  4. 微调
  5. 声学模型
  6. 训练详情
  7. 许可证

📝 项目概述

主要特点:

  • **流式优先架构:**为低延迟实时应用而构建。
  • **即用型管道:**包含预训练声学模型、短语分割器,以及基于KenLM的 CTC 束搜索解码器,并提供离线和非实时语音识别推理示例。
  • 演示 — 通过Docker即时启动本地语音识别服务,转录音频文件或实时麦克风输入。
  • 微调 使用🤗生态系统可以轻松地在自定义数据集上微调T-one。
  • **轻松部署:**提供使用Triton Inference Server部署的高吞吐量场景示例。
  • **完全开源架构:**所有模型和管道代码均可用。

📊 质量基准

词错误率 (WER) 用于评估自动语音识别系统的质量,可解释为与参考转录本相比识别错误的单词百分比。值越低表示准确率越高。T-one表现出最先进的性能,特别是在其目标领域(电话领域),同时在通用基准测试中保持竞争力。

类别 T-one (71M) GigaAM-RNNT v2 (243M) GigaAM-CTC v2 (242M) Vosk-model-ru 0.54 (65M) Vosk-model-small-streaming-ru 0.54 (20M) Whisper large-v3 (1540M)
呼叫中心 8.63 10.22 10.57 11.28 15.53 19.39
其他电话 6.20 7.88 8.15 8.69 13.49 17.29
命名实体 5.83 9.55 9.81 12.12 17.65 17.87
CommonVoice 19 (测试集) 5.32 2.68 3.14 6.22 11.3 5.78
OpenSTT asr_calls_2_val 原始 20.27 20.07 21.24 22.64 29.45 29.02
OpenSTT asr_calls_2_val 重标注 7.94 11.14 12.43 13.22 21.03 20.82

👨‍💻 推理示例

离线推理(用于整个音频文件)

from tone import StreamingCTCPipeline, read_audio, read_example_audio


audio = read_example_audio() # 或 read_audio("your_audio.flac")

pipeline = StreamingCTCPipeline.from_hugging_face()
print(pipeline.forward_offline(audio))  # 运行离线识别

输出:

[TextPhrase(text='привет', start_time=1.79, end_time=2.04), TextPhrase(text='это я', start_time=3.72, end_time=4.26), TextPhrase(text='я подумала не хочешь ли ты встретиться спустя все эти годы', start_time=5.88, end_time=10.59)]

流式推理(用于实时音频)

from tone import StreamingCTCPipeline, read_stream_example_audio


pipeline = StreamingCTCPipeline.from_hugging_face()

state = None  # ASR管道的当前状态(None - 初始状态)
for audio_chunk in read_stream_example_audio():  # 使用任何音频块来源
    new_phrases, state = pipeline.forward(audio_chunk, state)
    print(new_phrases)

# 完成管道并获取剩余短语
new_phrases, _ = pipeline.finalize(state)
print(new_phrases)

输出:

TextPhrase(text='привет', start_time=1.79, end_time=2.04)
TextPhrase(text='это я', start_time=3.72, end_time=4.26)
TextPhrase(text='я подумала не хочешь ли ты встретиться спустя все эти годы', start_time=5.88, end_time=10.59)

🔧 微调

要从预训练检查点微调T-one,您需要准备训练数据集,从 t-tech/T-one 🤗仓库加载分词器和特征提取器。

import torch

from tone.training.model_wrapper import ToneForCTC


device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = ToneForCTC.from_pretrained("t-tech/T-one").to(device)

设置数据整理器、评估指标、训练参数和🤗 Trainer。

完整指南请参阅 微调示例笔记本

🎙 声学模型

架构

T-one是一个基于Conformer架构的7100万参数声学模型,具有多项关键创新以提升性能和效率:

  • **SwiGLU激活:**前馈模块替换为SwiGLU模块,以获得更好的性能。
  • **现代归一化:**使用SiLU(Swish)激活和RMSNorm替代ReLU和LayerNorm。
  • **RoPE嵌入:**使用更快的旋转位置嵌入(RoPE)替换来自Transformer-XL的相对位置嵌入。
  • **U-Net结构:**时间维度在Conformer块内先下采样再上采样,提升模型的感受野。
  • **注意力分数复用:**多头自注意力层分组,每组只计算一次注意力分数以减少计算。
  • **高效状态管理:**流式状态仅在模型最后两层使用。

它以300毫秒的块处理音频,使用贪心解码或基于KenLM的CTC束搜索解码器生成转录。

该模型使用CTC-Loss训练。 T-one主要用于电话信道音频。然而,由于它在异构数据上训练,因此在不同领域都具有鲁棒性,不仅可用于电话领域。 该模型支持流式推理,这意味着它可以实时处理长音频文件。 该模型的主要用例是通话的流式语音识别。用户向模型发送小音频块,模型增量处理每个片段,实时返回最终文本和词级时间戳。 T-one可以轻松针对特定领域进行微调。

有关架构、设计选择和实现的详细探索,请查看我们的配套 文章。还请参阅我们关于如何提升流式ASR模型质量和训练速度的技术深度解析视频 YouTube

📉 训练详情

训练数据

声学模型在超过80,000小时的俄语语音上训练。很大一部分(高达64%)使用强大的ROVER模型集成进行伪标注。

领域 小时数 来源
电话 57.9k 内部
远场 2.2K 内部
混合 18.4K 内部
混合 2.3K 开源

训练程序

该模型从零开始(随机初始化)训练,在8块A100 GPU上训练7天,使用NVIDIA NeMo框架。关键训练参数包括:

  • **优化器:**AdamW
  • **调度器:**带预热的余弦退火
  • **精度:**16位混合精度
  • **批处理:**半排序批处理以提高效率

📜 许可证

本项目(包括代码和预训练模型)根据Apache 2.0许可证发布。

t-tech/T-one

作者 t-tech

automatic-speech-recognition
↓ 417.3K ♥ 86

创建时间: 2025-07-14 09:59:40+00:00

更新时间: 2025-07-30 11:07:43+00:00

在 Hugging Face 上查看

文件 (10)

.gitattributes
README.md
added_tokens.json
config.json
kenlm.bin
model.onnx ONNX
model.safetensors
special_tokens_map.json
tokenizer_config.json
vocab.json