Eleven v4를 소개합니다역대 가장 감성적인 모델, Eleven v4를 만나보세요. 10월 12일까지 Creator+에 크레딧 3배 제공

콘텐츠로 건너뛰기

Scribe v2 Realtime 작동 방식

작성자
Tadas Petra
게시일
최종 업데이트

듣기이 글 오디오로 듣기

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을 사용할 때는 부분 트랜스크립트와 커밋된 트랜스크립트, 두 가지 유형의 트랜스크립트가 있습니다.

부분 트랜스크립트는 "실시간 트랜스크립트"입니다. 이 트랜스크립션은 웹소켓을 통해 이루어지며, 말하는 동시에 반환됩니다. 따라서 "The cat is ..."라고 말하면 해당 단어가 실시간으로 스트리밍되는 것을 볼 수 있습니다.

다른 유형은 커밋된 트랜스크립트입니다. 트랜스크립션은 세그먼트 단위로 작동합니다. 트랜스크립션을 언제, 어떻게 커밋할지에 따라 트랜스크립트의 세그먼트 구분이 결정됩니다. 이를 위해 커밋 전략을 정의해야 합니다.

커밋 전략에는 두 가지 옵션이 있습니다. 첫 번째는 수동 방식으로, 트랜스크립트를 언제 커밋할지 완전히 제어할 수 있습니다. 가장 좋은 방법은 무음 구간이나 턴 모델처럼 논리적인 지점에서 커밋하는 것입니다.

다른 옵션은 음성 활동 감지(VAD)를 사용해 Scribe v2 Realtime이 자체적으로 적절한 세그먼트를 판단하도록 하는 것입니다. 이 방식은 음성과 무음 구간을 자동으로 감지합니다. 무음 임곗값에 도달하면 트랜스크립션 엔진이 트랜스크립트 세그먼트를 자동으로 커밋합니다.

커밋 전략이 꼭 필요한 이유는 무엇인가요?

말하는 동안 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 가입하기 후 애플리케이션 제작을 시작하세요!

작성자

Tadas Petra는 ElevenLabs 제품군을 활용해 개발자들이 더 쉽게 개발할 수 있도록 지원하는 개발자 관계 엔지니어입니다. 또한 개발자 교육 플랫폼 Hungrimind의 창립자이기도 합니다. 이전에는 Agora에서 리드 개발자 에반젤리스트로, Zero To Mastery에서 강사로 활동했습니다.

유사한 기사

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