text-to-speech

2 개의 포스트

에이전트에 음성 추가하기 (새 탭에서 열림)

Cloudflare는 기존 Agents SDK에 실시간 음성 기능을 통합할 수 있는 실험적 라이브러리인 `@cloudflare/voice`를 공개했습니다. 이 도구를 사용하면 별도의 음성 전용 프레임워크로 옮길 필요 없이, 기존의 Durable Object 아키텍처와 WebSocket 연결 모델을 그대로 유지하면서 에이전트에 음성 인터페이스를 추가할 수 있습니다. 이를 통해 개발자는 텍스트와 음성 입력을 동일한 상태 공간에서 처리하고 SQLite를 통해 대화 이력을 영속적으로 관리하는 고도화된 음성 에이전트를 구축할 수 있게 됩니다. **@cloudflare/voice의 주요 구성 요소 및 기능** * **고차 에이전트 함수**: 전체 음성 대화를 지원하는 `withVoice(Agent)`와 음성을 텍스트로 변환하는 기능만 제공하는 `withVoiceInput(Agent)`을 통해 용도에 맞는 에이전트를 설계할 수 있습니다. * **React 및 클라이언트 지원**: React 앱에서 음성 상태와 전사 내용을 쉽게 관리할 수 있는 `useVoiceAgent`, `useVoiceInput` 훅과 프레임워크에 구애받지 않는 `VoiceClient`를 제공합니다. * **내장 Workers AI 제공자**: 외부 API 키 설정 없이도 즉시 시작할 수 있도록 Deepgram Flux 및 Nova 3(실시간 STT), Deepgram Aura(TTS) 등 Cloudflare Workers AI 기반의 엔진을 기본 지원합니다. * **개방형 인터페이스**: 특정 기술 스택에 종속되지 않도록 인터페이스를 작게 설계하여, 개발자가 필요에 따라 다양한 음성, 통신, 전송 계층 제공자를 선택하고 조합할 수 있습니다. **서버 및 클라이언트 구현 방식** * **서버 측 로직**: `Agent` 클래스를 `withVoice`로 감싸고, `onTurn()` 메서드 내에서 사용자 발화에 대한 응답 로직을 작성합니다. 이때 전사기(Transcriber)와 TTS 인스턴스를 설정에 추가하는 것만으로 음성 에이전트 서버가 완성됩니다. * **클라이언트 측 연결**: 단일 WebSocket을 통해 16kHz 모노 PCM 오디오 데이터를 스트리밍하며, 클라이언트 라이브러리는 통화 상태(status), 실시간 전사(transcript), 음소거(mute) 기능 등을 자동으로 관리합니다. * **통합 아키텍처**: 음성 기능이 추가되어도 동일한 Durable Object 인스턴스와 SQLite 기반의 대화 기록을 공유하므로, 기존 텍스트 기반 에이전트의 지식과 맥락을 그대로 활용할 수 있습니다. **실시간 음성 파이프라인의 작동 원리** * **지속적 전사 및 턴 감지**: 통화가 시작되면 에이전트는 지속적인 전사 세션을 생성하며, STT 모델이 사용자의 발화 종료 시점을 스스로 판단하여 안정적인 텍스트 결과(Turn)를 앱 로직에 전달합니다. * **문장 단위 스트리밍**: `onTurn()` 메서드가 텍스트 스트림을 반환하면, 파이프라인이 이를 문장 단위로 분할(Chunking)하여 각 문장이 준비되는 즉시 실시간으로 음성을 합성해 클라이언트로 전송합니다. * **데이터 영속성**: 모든 사용자 메시지와 에이전트의 응답은 SQLite 데이터베이스에 자동으로 기록되어, 네트워크 연결이 끊기거나 서버가 재배포되어도 끊김 없는 대화 경험을 보장합니다. 이 라이브러리는 음성 기능을 복잡한 별도의 서비스로 분리하지 않고 에이전트의 라이프사이클 내에 자연스럽게 통합했다는 점에서 매우 실용적입니다. 기존 Cloudflare Agents SDK를 사용 중인 개발자라면 추가적인 인프라 구축 없이 Workers AI의 성능을 활용해 지연 시간이 낮은 실시간 대화형 AI를 구축할 수 있으므로, 단순 텍스트 인터페이스를 넘어선 다중 모달(Multi-modal) 환경으로의 확장을 적극 고려해 보길 추천합니다.

실시간 음성 대 음성 통 (새 탭에서 열림)

Google DeepMind는 원본 화자의 목소리를 유지하면서 단 2초의 지연 시간으로 실시간 통역이 가능한 혁신적인 엔드투엔드 음성 대 음성 번역(S2ST) 모델을 공개했습니다. 기존의 계층적 방식이 가졌던 높은 지연 시간과 개성 없는 음성 출력 문제를 해결하기 위해, 연구진은 스트리밍 아키텍처와 시계열 동기화 데이터 파이프라인을 결합했습니다. 이 기술은 언어 장벽을 넘어 원어민의 음색으로 즉각적인 소통을 가능하게 함으로써 더 자연스러운 원격 대화 환경을 제공합니다. ### 기존 계층적(Cascaded) S2ST의 한계 * 일반적인 실시간 번역 시스템은 음성 인식(ASR), 기계 번역(AST), 음성 합성(TTS)의 세 가지 개별 단계를 거치는 계층적 구조를 사용합니다. * 이러한 방식은 각 단계에서 발생하는 지연이 누적되어 결과적으로 4~5초 이상의 지연 시간이 발생하며, 이는 대화의 흐름을 끊고 턴제 대화를 강요하게 됩니다. * 또한 각 단계별로 오류가 누적될 위험이 크고, 일반적인 TTS를 사용하기 때문에 원본 화자의 목소리 특성을 살리지 못한다는 단점이 있습니다. ### 확장 가능한 시계열 동기화 데이터 파이프라인 * 원본 음성과 번역된 음성 간의 정확한 시점 일치를 위해 대규모 시계열 동기화 데이터 세트를 생성하는 새로운 파이프라인을 구축했습니다. * 강제 정렬(Forced Alignment) 알고리즘을 사용하여 오디오와 텍스트를 매핑하고, 기계 번역된 텍스트가 원본 오디오의 타이밍에 맞게 배치되도록 정밀하게 설계되었습니다. * 커스텀 TTS 엔진을 통해 원본 화자의 목소리 특성을 유지하면서 자연스러운 대상 언어 음성을 생성하며, 지연 시간 요건을 충족하지 못하는 데이터는 엄격한 필터링 과정을 통해 제외됩니다. ### 엔드투엔드 스트리밍 아키텍처 * 이 모델은 근본적인 트랜스포머 블록을 기반으로 하며, 실시간 처리에 최적화된 스트리밍 인코더와 디코더로 구성됩니다. * 스트리밍 인코더는 이전 10초간의 입력을 바탕으로 소스 오디오 데이터를 요약하며, 스트리밍 디코더는 압축된 상태 정보를 활용해 자기회귀(Autoregressive) 방식으로 번역된 음성을 예측합니다. * 오디오는 SpectroStream 코덱 기술을 통해 RVQ(Residual Vector Quantization) 토큰이라는 2차원 계층 구조로 표현되며, 이는 모델이 실시간 스트림 환경에서 음성 품질과 출력 시점을 효과적으로 결정할 수 있게 합니다. 이번 연구는 실시간 번역의 고질적인 문제였던 '지연 시간'과 '화자의 정체성 손실'을 동시에 해결했다는 점에서 큰 의미가 있습니다. 2초라는 짧은 지연 시간과 화자 고유의 음색 보존은 단순한 정보 전달을 넘어 정서적 연결이 필요한 비즈니스 미팅이나 개인적인 통화 환경에서 소통의 질을 획기적으로 높여줄 것으로 기대됩니다.