실시간 음성 번역은 단순히 음성 인식(STT), 기계 번역(MT), 그리고 음성 합성(TTS)을 조합하는 것만으로는 구현할 수 없습니다.
실제 화상 회의에서 사용하려면 통신 지연, 다중 화자 음성 처리, 언어별 음성 배포, 연결 안정성 등 다양한 기술적 과제를 해결해야 합니다.
저는 현재 실시간 AI 음성 번역 기능을 갖춘 다국어 화상 회의 플랫폼인 "Voicli"을 개발하고 있습니다.
본 기사에서는 그 개발 경험을 바탕으로 Python, Django, WebRTC, LiveKit을 사용한 다국어 음성 커뮤니케이션 시스템의 기술 설계와 실시간 번역 시 고려해야 할 핵심 사항들을 정리합니다.
※ 본 기사는 기술 설계에 대한 아이디어를 공유하는 것이며, 게재된 구성도나 코드는 설명 목적으로 간략화되었습니다.
일반적인 음성 번역 시스템은 다음과 같은 3단계로 구성됩니다.
- Speech-to-Text (STT): 음성을 텍스트로 변환
- Machine Translation (MT): 텍스트를 목표 언어로 번역
- Text-to-Speech (TTS): 번역된 문장을 음성으로 생성
이 구성은 이해하기 쉽고, 각 컴포넌트를 개별적으로 변경할 수 있다는 장점이 있습니다.
반면, 각 처리가 이전 단계의 완료를 기다리는 설계 방식에서는 지연 시간이 누적됩니다. 예를 들어 다음과 같은 문제가 발생합니다.
- 발화가 끝날 때까지 기다리면 번역 시작이 늦어집니다.
- 문장이 길수록 음성 인식 대기 시간이 늘어납니다.
- 번역 결과가 확정될 때까지 음성 합성을 시작할 수 없습니다.
- 네트워크 왕복 시간이 전체 응답 시간에 영향을 미칩니다.
실제 대화에서는 번역 정확도뿐만 아니라, 상대방이 어느 타이밍에 번역된 음성을 들을 수 있는지가 중요합니다. 실시간 번역에서는 음성 전체를 수신한 후 처리하는 것이 아니라, 작은 단위로 음성을 다루는 스트리밍 방식이 중요합니다.
기본적인 아이디어는 다음과 같습니다.
스트리밍 처리를 통해 특정 조건 하에서는 발화가 완전히 끝나기 전에 후속 처리를 시작할 수 있습니다. 하지만 음성을 세밀하게 분할한다고 해서 반드시 품질이 향상되는 것은 아닙니다.
특히 일본어와 영어는 어순이 다르기 때문에, 문장 도중에 번역을 확정하면 나중에 문맥이 바뀔 가능성이 있습니다. 따라서 중요한 것은 다음의 균형입니다.
- 번역 시작까지의 대기 시간
- 문맥 이해에 필요한 음성의 길이
- 번역의 정확성
- 음성 합성의 자연스러움
단순히 저지연화만을 우선시하기보다는, 전체 대화의 이해 용이성을 평가해야 합니다.
다수의 인원이 참여하는 화상 회의에서는 음성과 영상을 안정적으로 전송할 수 있는 시스템이 필요합니다. WebRTC는 실시간 음성/영상 통신에 널리 사용되는 기술입니다. LiveKit은 WebRTC를 기반으로 한 실시간 통신 플랫폼이며, 참가자나 미디어 트랙 관리에 활용될 수 있습니다.
설명용 시스템 구성을 보여드립니다.
여기서 중요한 것은 원본 음성과 번역된 음성을 구분하여 관리하는 것입니다. 참가자마다 필요한 음성이 다르기 때문입니다. 예를 들어 다음과 같은 회의를 가정해 봅시다:
| 참가자 | 말하는 언어 | 듣고 싶은 언어 |
|---|
| A | 일본어 | 일본어 |
| ... | | |
| A가 일본어로 발언했을 경우, B에게는 영어, C에게는 우크라이나어 번역이 필요합니다. 반면, A 자신에게는 자신의 발화를 번역해서 되돌려줄 필요는 없습니다. | | |
이러한 요구사항에서는 화자(Speaker), 청취자(Listener), 선택 언어를 분리하여 관리하는 설계가 유용합니다.
WebRTC가 음성/영상 통신을 담당하는 한편, 애플리케이션에는 비즈니스 로직을 관리할 백엔드가 필요합니다. Django와 Django REST Framework는 다음과 같은 기능에 활용될 수 있습니다:
- 사용자 인증
- 회의 생성 및 관리
- 참가자 접근 제어
- 언어 설정 저장
- 구독(Subscription) 관리
- 사용량 기록
또한, Django Channels를 이용하면 WebSocket 기반의 실시간 이벤트를 처리할 수 있습니다. 예를 들어, 참가자가 번역 대상 언어를 변경했을 때 그 설정을 회의 중 관련 컴포넌트에 반영해야 합니다.
설계상 다음과 같은 이벤트가 고려될 수 있습니다:
{
"type": "translation.language_changed",
"participant_id": "user_123",
...
}
이는 설명용 이벤트 예시이며, 특정 공개 API 사양은 아닙니다.
실시간 음성 자체와 사용자 설정 또는 회의 상태 업데이트를 분리함으로써, 시스템의 책임(責務)을 정리하기 쉬워집니다.
Python 기반 시스템에서는 Redis와 Celery를 조합하여 백그라운드 처리를 구현할 수 있습니다.
하지만 모든 음성 처리를 일반적인 Celery 태스크로 실행해서는 안 됩니다.
저지연(low latency)이 요구되는 연속 음성 처리의 경우, 상시 연결된 전용 워커나 스트리밍 세션이 적합한 경우가 있습니다.
반면, Celery는 다음과 같은 비동기 처리에 활용될 수 있습니다.
- 회의 종료 후 데이터 처리
- 사용량 집계
- 알림 전송
- 주기적인 클린업
- 시간이 오래 걸리는 백그라운드 처리
중요한 것은, 실시간성이 필요한 처리와 나중에 실행할 수 있는 처리를 분리하는 것입니다.
여러 참가자가 동시에 말하면, 번역 시스템은 어떤 음성을 처리해야 할지 판단해야 합니다.
화자 식별(Speaker Diarization), 음성 트랙 분리, 발화 타이밍 제어 등이 설계상의 고려 사항이 됩니다.
번역 음성만 재생하는 방식과, 원본 음성을 작게 재생하면서 번역 음성을 듣는 방식에서는 사용자 경험이 다릅니다.
사용자가 번역 음성을 이해하기 쉽도록, 볼륨이나 재생 타이밍 제어가 중요합니다.
실제 회의에서는 네트워크가 일시적으로 불안정해질 수 있습니다.
재연결 시에는 다음 사항들을 고려해야 합니다.
- 사용자의 언어 설정을 복원하는 것
- 오래된 번역 세션을 적절하게 종료하는 것
- 중복되는 음성 스트림을 방지하는 것
- 재연결 후의 회의 상태를 동기화하는 것
참가자 수뿐만 아니라, 동시 발화 수, 번역 대상 언어 수, AI 처리 세션 수도 시스템 부하에 영향을 줍니다.
특히, 같은 발화를 여러 언어로 번역하는 경우에는, 번역 처리의 공유 가능성이나 전송 방법을 검토해야 합니다.
실시간 음성 번역에서는 단순한 API 응답 시간만으로는 사용자 경험을 평가할 수 없습니다.
예를 들어, 다음 지표들이 고려될 수 있습니다.
| 지표 | 내용 |
|---|
| Time to First Translated Audio | 발화 시작부터 번역 음성 재생 시작까지 |
| ... | |
| 특히, 일본어, 영어, 우크라이나어처럼 문법 구조가 다른 언어를 조합하는 경우, 지연(latency)과 번역 품질을 동시에 평가하는 것이 중요합니다. | |
이러한 기술적 과제에取り組む 제품의 예시가 현재 개발 중인 Voicli입니다.
Voicli는 참가자가 각자 자신의 언어로 말할 수 있는 다국어 대응 비디오 회의 플랫폼입니다.
실시간 AI 음성 번역과 자막을 결합하여, 다른 언어를 사용하는 참가자들 간의 커뮤니케이션을 지원합니다.
백엔드에는 Python, Django, Django Channels 등을 사용하고, 실시간 통신에는 LiveKit을 채택했습니다.
개발을 통해 특히 중요하다고 느낀 것은, AI 모델의 성능뿐만 아니라 음성 통신, 번역 처리, 회의 상태 관리까지 포함한 시스템 전체의 설계입니다.
기술적 접근 방식에 관심이 있는 분들은 실제 서비스도 확인해 보세요.
실시간 AI 음성 번역 시스템 개발에서는, 음성 인식이나 번역 모델뿐만 아니라 통신 방식, 상태 관리, 비동기 처리, 번역 음성 전송 설계가 중요합니다.
이번 포인트를 요약합니다.
- STT(Speech-to-Text)・번역・TTS(Text-to-Speech)를 순차적으로 처리하면 지연이 누적되기 쉽습니다.
- 스트리밍 처리는 지연 감소에 도움이 되지만, 번역 품질과의 균형이 필요합니다.
- WebRTC와 LiveKit은 다인원 실시간 음성 통신을 구축하기 위한 선택지가 됩니다.
- Django Channels는 회의 상태나 설정 변경 등의 실시간 이벤트 관리에 활용될 수 있습니다.
- 음성 스트리밍과 일반적인 백그라운드 처리는 분리하여 설계하는 것이 바람직합니다.
앞으로, 음성 AI의 성능 향상에 따라 언어가 다른 참가자들이 자연스럽게 대화할 수 있는 시스템의 가능성은 더욱 넓어질 것으로 생각합니다.