본문 바로가기

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 사용법

이 모델을 사용하려면 텍스트 음성 변환(TTS) API를 이용해야 합니다. 시작하려면 다음 두 단계를 진행하세요:

  1. Scribe 인스턴스 초기화
  2. API에 연결

API를 어디서 호출하느냐에 따라 초기화 방법이 다릅니다. 서버에서 호출하는 경우, API 키로 바로 초기화한 뒤 해당 인스턴스로 Scribe v2 Realtime에 연결할 수 있습니다.

하지만, API 키를 클라이언트에 노출하는 것은 큰 보안 위험입니다. 따라서 클라이언트에서 스트리밍할 경우, 1회용 토큰으로 초기화해야 합니다.

이 토큰은 API 키 보호를 위해 서버에서 생성해야 합니다.

React 애플리케이션을 만들고 있으므로 토큰 방식을 사용합니다. 이 토큰은 연결 단계에서 전달되며, Scribe 인스턴스 생성이 간단해집니다.

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

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

Scribe v2 Realtime에 연결하기

적절히 초기화했다면 Scribe v2 Realtime에 연결할 수 있습니다. React 언어 번역 프로젝트에서는 클라이언트 측 스트리밍을 사용했기 때문에 백엔드에서 1회용 토큰이 필요했습니다. 이 토큰은 API에 연결할 때마다 생성해서 전달해야 합니다.

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

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


커밋 전략

Scribe v2 Realtime을 사용할 때 전사에는 두 가지 종류가 있습니다: 부분 전사와 커밋된 전사.

부분 전사는 '실시간 전사'입니다. 이 전사는 웹소켓을 통해 실시간으로 전달되며, 말을 할 때마다 바로 확인할 수 있습니다. 예를 들어 "고양이가 ..."라고 말하면 그 단어들이 바로 표시됩니다.

다른 한 가지는 커밋된 전사입니다. 전사는 여러 구간(세그먼트)으로 나뉘어 저장됩니다. 언제, 어떻게 전사를 커밋할지에 따라 전사 구간이 결정됩니다. 이를 위해 커밋 전략을 정해야 합니다.

커밋 전략에는 두 가지 옵션이 있습니다. 첫 번째는 수동 방식으로, 언제 전사를 커밋할지 직접 결정할 수 있습니다. 일반적으로 침묵 구간이나 대화의 자연스러운 구분점에서 커밋하는 것이 좋습니다.

다른 방법은 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 번역기 API에 전달해 실시간으로 번역 결과를 표시하면 됩니다.

지금 시작하기

읽어주셔서 감사합니다! ElevenLabs에 가입하세요 그리고 나만의 애플리케이션을 만들어보세요!

ElevenLabs 팀의 다른 글 보기

최고 품질의 AI 오디오로 창작하세요