推出 Eleven v4认识 Eleven v4:迄今情感表现最丰富的模型。 Creator+ 套餐含 3 倍点数优惠,截止至 10 月 12 日

跳至内容

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

要使用此模型,需要使用 文本转语音 API。开始前需要完成两步:

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

需要根据调用 API 的位置采用不同的初始化方式。如果在服务端调用,可直接使用 API 密钥初始化,再通过该实例连接 Scribe v2 Realtime。

但是,将 API 密钥暴露给客户端存在重大安全风险。因此,如果在客户端进行流式传输,需要使用一次性令牌初始化。

此令牌必须在服务端生成,以保护 API 密钥。

由于我们要构建 React 应用,因此将采用令牌方式。令牌会在连接阶段传入,因此创建 Scribe 实例非常简单。

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

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

连接 Scribe v2 Realtime

完成相应初始化后,即可连接 Scribe v2 Realtime。在 React 语言翻译项目中,我们使用客户端流式传输,因此需要从后端获取一次性令牌。每次连接 API 时,都需要生成并传入该令牌。

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

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


提交策略

使用 Scribe v2 Realtime 时,有两类转写文本:部分转写和已提交转写。

部分转写即“实时转写”。转写通过 WebSocket 进行,并会在你说话时返回结果。例如,当你说“猫在……”时,这些词会实时流式显示。

另一类是已提交转写。转写按片段进行。选择在何时、以何种方式提交转写,将决定转写文本的分段方式。为此,需要定义提交策略。

提交策略有两种选择。第一种是手动提交,你可以完全控制转写文本的提交时机。最佳实践是在静音时或其他合理节点提交,例如轮次切换时。

另一种是让 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 则是对话历史,包含连接 Scribe v2 Realtime 期间已提交的片段列表。

使用 AI 翻译

这样就能获取对话的实时转写文本。现在,你可以为应用设计美观的 UI,或添加实时语言翻译等更多功能。

要构建演示中的实时语言翻译器,需要将转写文本传递给 Chrome AI Translator API,并实时显示输出结果。

开始构建

感谢阅读! 注册 ElevenLabs,开始构建应用!

相关内容

用高质量 AI 音频创作