推出 Eleven v4认识 Eleven v4:迄今情感表现最丰富的模型。

跳至内容

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 会转写每个词。因此,如果你说“我尖叫……”,可能会被识别为“冰淇淋……”。但当获得完整片段“我每次在浴室看到蜘蛛都会尖叫”这一上下文后,输出会更准确。

因此,部分转写可实时显示,而已提交转写则能更准确地记录对话历史。

显示转写内容

连接到 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,开始构建应用!

作者

Tadas Petra 是一名开发者关系工程师,致力于帮助开发者使用 ElevenLabs 产品。他还是开发者教育平台 Hungrimind 的创始人。此前曾任 Agora 首席开发者布道师和 Zero To Mastery 讲师。

相关内容

用高质量 AI 音频创作