跳到内容

Scribe v2 Realtime 工作原理

Scribe v2 Realtime 如何实现低延迟转写,适用于实时翻译和语音应用

Scribe v2 Realtime

Scribe v2 Realtime 是一款极快的语音转文本模型,可用于实时转写。速度和质量的结合,让许多以前无法实现的场景成为可能。

例如,我们用 Scribe v2 Realtime 和 Chrome Translator API 构建了这个实时语言翻译器。

Live transcription on the left and committed transcripts on the right in a list

如果需要本演示的详细教程,可以在这里查看。本指南将重点介绍 Scribe v2 Realtime 的整体原理及其工作方式。

模型介绍

ElevenLabs 提供两种音频转写模型:Scribe v2 和 Scribe v2 Realtime。

Optimized For
Scribe v2
Accuracy
Scribe v2 Realtime
Ultra low latency
Use Case
Scribe v2
Batch transcription, subtitling, and captioning at scale.
Scribe v2 Realtime
Voice agents, meeting notetakers, and other live applications.

Scribe v2 适合异步转写,而 Scribe v2 Realtime 适用于需要实时转写的场景。

对于实时语言翻译应用,Scribe v2 Realtime 是最佳选择。

API 使用

要使用该模型,需要调用 Speech to Text API。开始前需完成两步:

  1. 初始化 Scribe 实例
  2. 连接 API

根据调用 API 的位置,初始化方式会有所不同。如果在服务端调用,可直接用 API key 初始化,然后用该实例连接 Scribe v2 Realtime。

但,将 API key 暴露给客户端存在很大安全风险。因此,如果在客户端进行流式传输,需要用一次性 token 初始化。

该 token 需在服务端生成,以保护 API key。

本例为 React 应用,因此采用 token 方式。连接时传递该 token,Scribe 实例的创建也就非常简单。

import { useScribe } from "@elevenlabs/react";

function MyComponent() {
  const scribe = useScribe({
    modelId: "scribe_v2_realtime",
  });
  
  //...
}

连接 Scribe v2 Realtime

初始化后,即可连接 Scribe v2 Realtime。React 语言翻译项目采用客户端流式传输,因此每次连接 API 时都需要后端生成并传递一次性 token。

const handleStart = async () => {
  const token = await fetchTokenFromServer();

  await scribe.connect({
    token,
    microphone: {
	  echoCancellation: true,
	  noiseSuppression: true,
    },
  });
};


提交策略

使用 Scribe v2 Realtime 时,转写内容分为两类:临时转写和已提交转写。

临时转写就是“实时转写”。通过 websocket 实时返回你说的话。例如说 “The cat is ...”,这些词会实时显示。

另一类是已提交转写。转写以片段为单位进行,何时以及如何提交转写内容,将决定转写的分段方式。为此,需要设定提交策略。

提交策略有两种。第一种是手动提交,完全由你决定何时提交转写。最佳做法是在停顿或其他逻辑节点(如轮次模型)时提交。

另一种方式是让 Scribe v2 Realtime 通过语音活动检测(VAD)自动判断分段。该方法会自动检测语音和静音片段,达到静音阈值时,转写引擎会自动提交该片段。

为什么需要提交策略?

说话时,Scribe v2 Realtime 会逐字转写。例如说 “I scream...”,可能被识别为 “Ice cream...”。但有完整语境 “I scream every time I see a spider in the bathroom” 时,结果会更准确。

因此,临时转写可实时展示,已提交转写则能更准确反映对话内容。

展示转写内容

连接 Scribe v2 Realtime 后,转写会自动进行。可通过 partialTranscript 和 committedTranscripts 属性获取转写内容。

<div>
  <button onClick={handleStart} disabled={scribe.isConnected}>
	Start Recording
  </button>
  <button onClick={scribe.disconnect} disabled={!scribe.isConnected}>
	Stop
  </button>

  {scribe.partialTranscript && <p>Live: {scribe.partialTranscript}</p>}

  <div>
	{scribe.committedTranscripts.map((t) => (
	  <p key={t.id}>{t.text}</p>
	))}
  </div>
</div>

partialTranscript 是当前片段的实时转写,committedTranscript 是对话历史,由已提交的片段组成。

AI 翻译

这样就能实时获取对话转写。你还可以为应用添加更美观的界面,或增加实时语言翻译等功能。

要实现演示中的实时语言翻译器,只需将转写内容传递给Chrome AI Translator API,并实时展示翻译结果。

开始构建

感谢阅读! 注册 ElevenLabs 账号,开始构建你的应用吧!

查看更多 ElevenLabs 团队的文章

用高质量 AI 音频创作