GPT-4o 所展示对话式 AI 的新高度,正一步步把我们在电影《Her》中看到的 AI 语音体验变成现实。AI 的语音交互正在变得更丰富、更流畅、更易用,成为构建多模态智能体的重要组成部分。
 

但是,“最后一公里”的挑战仍然存在:Voice Agent 依然不像真人一样交谈。
 

在真实对话里,插话、停顿、甚至讲话重叠都很常见。如果语音 AI 的回应太早、太晚、或者干脆没有回应,整个用户体验就会变得很“出戏”。对话中的“怎么说”往往比“说了什么”更重要。一段停顿可能代表犹豫、礼貌、自信等不同含义。为了让语音 AI 真正像人类一样交谈,它不能只是“听见”并“答复”——它需要真正倾听、理解上下文、并自然地应对。
 

为了解决以上问题,为大家介绍两款新模型:

-TEN VAD(语音活动检测)

-TEN Turn Detection(轮次检测)

 

这两个模型是由声网和RTE开发者社区主要支持,基于声网十余年实时语音深度研究成果与超低延迟技术积累所打造的高性能模型,能够让 AI Agent 的交互体验更加自然,任何人都可以自由使用。这两款模型也将作为开源对话式 AI 生态体系 TEN 的核心模块持续迭代优化。

 

模型链接:

TEN VAD模型链接:

https://modelscope.cn/models/TEN-framework/ten-vad

 

TEN Turn Detection模型链接:

https://modelscope.cn/models/TEN-framework/TEN_Turn_Detection

 

TEN VAD Github:

https://github.com/TEN-framework/ten-vad


 

TEN Turn Detection Github:

https://github.com/TEN-framework/ten-turn-detection


 

01.TEN VAD:语音活动检测

TEN VAD 是一个轻量的,低延迟,低功耗,高准确率语音活动检测模型,通常用于语音输入 LLM 前的预处理步骤:

  • 识别音频帧中是否有人声;
  • 判断一句话的开始和结束位置;
  • 过滤掉无关音频(背景噪音、静音等);
     

通过 TEN VAD 预处理,可以提升语音识别(STT)的准确性,同时显著降低处理成本——避免将无意义的声音送入到 STT 流程中从而产生开销。
 

目前 TEN VAD 已开源了 ONNX 模型及预处理代码,并同时提供了可供 Linux(.so)、Windows(.dll)、macOS & iOS(.framework)、Android(.so)、Web(.wasm)平台调用所需二进制文件及示例代码,开箱即用。
 

👉一键Start :https://github.com/TEN-framework/ten-vad
 


02.TEN Turn Detection:轮次管理

TEN Turn Detection 的核心功能是对话论次判断,在判断用户何时停止说话方面有不错的表现,这点对于 AI 语音交互的「自然感」方面十分重要。在真实交流中,AI 需要区分出「中途停顿」与「说完了」的差别。插话太早会打断人类思路,太迟回应则会显得迟钝、不自然。

 

TEN Turn Detection 支持中英文、支持全双工语音交互(允许用户和 AI 同时说话),并通过分析语言模式,判断说话者是在思考、犹豫,还是已经表达完毕,用以 AI 判断「该说」还是「该听」,从而让对话更加流畅自然。
 

03.性能对比

与目前常用的 WebRTC Pitch VAD 和 Silero VAD 相比,在公开的 TEN VAD 测试集上(来自多场景、逐帧人工标注),TEN VAD 展示出了更优的效果。

在延迟方面 TEN VAD 同样领先。它能快速检测语音与非语音之间的切换,而 Silero VAD 则存在数百毫秒的延迟,导致人机交互系统的端到端延迟和打断延迟增加。

而针对 TEN Turn Detection ,在多场景测试数据集上和其他同类开源模型进行对比,各模型的表现如下:

一个真实用户案例显示,使用 TEN VAD 后,音频传输数据量减少了 62%,显著降低了语音服务成本。

04.实践教程

通过 git clone 使用:

1、克隆仓库

git clone https://github.com/TEN-framework/ten-vad.git
cd ten-vad
apt install libc++-dev

2、进入 examples 目录

cd ./examples

3、测试

python test.py s0724-s0730.wav out.txt

TEN 轮次检测模型推理代码

from modelscope import AutoTokenizer, AutoModelForCausalLM
import torch
# Load model and tokenizer
model_id = 'TEN-framework/TEN_Turn_Detection'
model = AutoModelForCausalLM.from_pretrained(model_id, trust_remote_code=True, torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
# Move model to GPU
model = model.cuda()
model.eval()
# Function for inference
def analyze_text(text, system_prompt=""):
    inf_messages = [{"role":"system", "content":system_prompt}] + [{"role":"user", "content":text}]
    input_ids = tokenizer.apply_chat_template(
        inf_messages, 
        add_generation_prompt=True, 
        return_tensors="pt"
    ).cuda()
    with torch.no_grad():
        outputs = model.generate(
            input_ids, 
            max_new_tokens=1, 
            do_sample=True, 
            top_p=0.1, 
            temperature=0.1, 
            pad_token_id=tokenizer.eos_token_id
        )
    response = outputs[0][input_ids.shape[-1]:]
    return tokenizer.decode(response, skip_special_tokens=True)
# Example usage
text = "Hello I have a question about"
result = analyze_text(text)
print(f"Input: '{text}'")
print(f"Turn Detection Result: '{result}'")

点击阅读原文,即可跳转模型链接~

https://modelscope.cn/organization/TEN-framework

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐