음성 채팅룸 앱을 만드는 방법: 클럽하우스와 같은 솔루션 아키텍처

10 분 읽기
Feb 18, 2025

장면 소개

음성 채팅룸은 순수 오디오 형식의 온라인 상호작용 사회적 상호작용을 위한 가상 공간입니다. 일반적으로 방 안에는 여러 개의 마이크가 있습니다. 호스트와 연결된 청취자는 마이크를 통해 대화하고, 다른 청취자는 방에 들어와서 듣습니다. 다양한 유형의 방마다 마이크 수와 최대 청취자 수가 다릅니다. TRTC는 동시에 최대 50명이 마이크로 대화할 수 있으며, 상하 마이크 간의 부드러운 전환, 300ms 이하의 음성 채팅 지연을 지원하고, 음성 변조, 분위기 효과음, 잔향 및 기타 오디오 효과를 지원하여 음성 채팅 경험을 더욱 풍부하게 만듭니다. TRTC Chat와 결합하면 공개 채팅, 비공식 채팅, 그룹 채팅, 좋아요, 선물 등 다양한 메시지 상호작용 형태를 지원하여 좋은 상호작용 경험을 창출합니다.

voice chat room view.png

구현

완전한 음성 채팅룸 시나리오를 실현하기 위해서는 여러 기능 모듈이 포함됩니다: 방 관리, 마이크 관리, 오디오 스트림 관리, 녹음 및 검토 등. 각 기능 모듈 아래의 주요 작업 및 기능 포인트는 다음 표에 표시됩니다:

기능 모듈

주요 작업 및 기능 포인트

방 관리

방 목록, 방 생성, 방 참여, 방 종료, 방 삭제

마이크 관리

마이크 활성화, 마이크에 사람 유지, 마이크에서 나가기, 마이크에서 강제 퇴장, 마이크 음소거, 마이크 잠금, 마이크 이동

오디오 스트림 관리

푸시-풀 스트림 아키텍처 솔루션, 실시간 스트림 구독 모드

녹음 및 검토

TRTC 클라우드 녹음, Tianyu 콘텐츠 보안 검토

채팅룸 시나리오의 전체 비즈니스 아키텍처는 아래 그림과 같이 표시됩니다. 방 소유자가 방을 생성하고 사용자는 관심 있는 방을 선택하여 참여할 수 있습니다. 방에 들어간 후 사용자는 호스트와 마이크로 상호작용할 수 있습니다. 방 내의 음성 콘텐츠는 준수 요구사항으로 인해 녹음 및 검토되어야 합니다.

 Voice Chat Room App1.png

방 관리

방 관리 모듈은 주로 방 목록 유지 관리를 담당하며, 다음과 같은 기능을 포함합니다:

 방 생성: 사용자가 비즈니스 시스템에 로그인한 후 방을 생성할 수 있습니다. 방을 생성한 후 방 목록에 추가해야 합니다.

 방 참여: 사용자가 기존 방에 참여할 수 있습니다. 방에 참여한 후 현재 방 인원 목록을 추가해야 합니다.

 방 종료: 사용자가 현재 방에서 종료할 수 있습니다. 방에서 종료한 후 현재 방 인원 목록을 삭제해야 합니다.

 방 삭제: 모든 사용자가 방에서 나간 후 방을 삭제해야 합니다. 방을 삭제한 후 방 목록도 삭제해야 합니다.

솔루션 아키텍처

전체 방 관리 아키텍처에서 방 관리는 주로 세 가지 모듈을 포함합니다:

  • 비즈니스 측 방 관리: 방 목록의 속성과 상태를 동기화하는 데 주로 사용되며, 기능으로는 방 목록 조회, 방 입장 및 퇴장, 방 생성 및 삭제가 포함됩니다.
  • 방 관리: 주로 방 구성원 목록, 신호 및 메시지 상호작용에 사용되며, 마이크 신청 승인/거부, 마이크에 사람을 올리고 내리기, 마이크 음소거/차단 등을 포함하고, 그룹 차원에 따라 구분할 수 있으며, 그룹 생성, 그룹 참여, 그룹 퇴장 및 그룹 삭제가 포함됩니다.
  • TRTC 방 관리: 주로 오디오 스트림 상호작용 및 전송에 사용되며, 호스트/청취자의 목소리/음악 송신 및 청취를 포함하고, 방 차원에 따라 구분할 수 있으며, TRTC 방에 입장하고 퇴장하는 것을 포함합니다.

특정 구현

방 관리에서 사용자 역할에 따라 기능 권한 및 구현 프로세스가 다릅니다. 음성 채팅룸에는 두 가지 주요 역할이 있습니다: 방 소유자와 청중. 역할 설명 및 차이는 아래 표에 자세히 나와 있습니다:

역할

역할 설명

차이점

방 소유자

방에서 가장 높은 권한을 가진 소유자로, 방을 생성하거나 삭제할 수 있습니다.

 역할은 반드시 호스트여야 합니다.

 비즈니스 방/RTC 방을 생성하거나 삭제할 수 있습니다.

청중

방의 참가자로, 마이크를 켜고 호스트가 될 수 있습니다.

 역할은 청중/호스트가 될 수 있습니다.

 방에 들어가고 나갈 수 있습니다.

구현 과정

방 소유자

1. 방 목록을 가져옵니다.

2. 비즈니스 인터페이스를 통해 해당 방을 생성합니다.

3. 방을 생성합니다.

4. 비즈니스 방/RTC 방에 들어가서 다른 사람들과 상호작용합니다.

5. RTC 방/비즈니스 방에서 나갑니다.

6.  방을 삭제합니다.

청중

1. 방 목록을 가져옵니다.

2. 비즈니스 방/RTC 방에 들어가서 다른 사람들과 상호작용합니다.

3.  RTC 방/비즈니스 방에서 나갑니다.

마이크 관리

음성 채팅룸의 마이크는 일반적으로 질서 있게 제한되어 있습니다. 예를 들어, 방의 청취자는 마이크에 올라가기 전에 방 소유자의 동의를 받아야 합니다. 방의 마이크 수는 일반적으로 10개를 초과하지 않습니다. 마이크 관리는 비즈니스 시나리오에 따라 방의 마이크 수를 정의하고, 현재 방의 모든 마이크 상태 관리를 주로 책임집니다.

마이크 관리의 주요 기능은 다음과 같습니다: 마이크 활성화, 마이크에 사람 올리기, 마이크에서 제거하기, 마이크에서 강제 퇴장, 마이크 음소거, 마이크 잠금, 마이크 이동 등.

 사용자가 방에 들어간 후 유휴 마이크가 있을 때만 마이크에 올라갈 수 있도록 신청할 수 있습니다.

 방 소유자가 사용자가 마이크에 올라가는 것을 동의한 후 마이크 상태를 비유휴 상태로 변경해야 합니다.

 사용자가 스트리밍을 중단하고 마이크에서 나가면 마이크 상태를 리셋해야 합니다.

 방 소유자는 마이크 잠금, 마이크 초대, 마이크 강제 퇴장, 마이크 음소거 등의 권한을 가지고 있습니다.

솔루션 아키텍처

다음은 마이크 관리에 대한 TRTC의 솔루션 아키텍처 소개입니다. 전체 방 관리 구조에서 방 소유자는 가장 높은 권한을 가지고 있으며, 사람을 마이크에 초대하고 퇴장시키고, 마이크 오디오를 음소거하고 해제하며, 마이크를 차단하고 해제할 수 있습니다. 청취자도 마이크에 올라가고 호스트가 되어 방의 다른 호스트와 상호작용할 수 있습니다.

특정 구현

마이크 관리에서 사용자 역할에 따라 기능 권한 및 구현 프로세스가 다릅니다. 주로 두 가지 역할이 있습니다: 호스트와 청중. 역할 설명 및 차이는 아래 표에 자세히 나와 있습니다:

역할

설명

차이점

방 소유자

마이크 위치에 대한 가장 높은 권한을 가진 사람으로, 모든 마이크 위치의 관리를 책임집니다. 방 소유자가 체크아웃할 경우 모든 마이크 위치는 자동으로 해체됩니다.

 역할은 반드시 호스트여야 합니다.

 입장 시 마이크에 적극적으로 올라갈 수 있습니다.

 마이크 신청 승인/거부

 사람을 마이크에 올리거나 내리기

 마이크 오디오 음소거/해제

 마이크 차단/해제

청중

방의 참가자로, 마이크를 켜고 끄면서 상호작용할 수 있습니다.

 역할은 청중/호스트가 될 수 있습니다.

 마이크에 올라가고 나갈 수 있습니다.

구현 과정

방 소유자

1. 방 로비에 들어가 방 목록을 가져옵니다.

2. 방 소유자로서 방을 생성하고 방에 참여합니다.

3. 그룹 속성을 기반으로 마이크 목록을 가져와서 마이크에 올라갑니다.

4. 청취자가 마이크에 올라갑니다. 마이크에 올라간 후 다른 사용자와 상호작용할 수 있습니다. 청취자가 마이크에 올라가는 방법은 두 가지가 있습니다: 청취자가 마이크에 올라가겠다고 적극적으로 신청하고 호스트가 동의하는 경우, 또는 호스트가 청취자를 마이크에 초대하고 청취자가 동의하는 경우입니다.

5. 청취자가 마이크에서 나갑니다. 마이크에서 나가는 방법은 두 가지가 있습니다: 청취자가 자발적으로 마이크에서 나가거나 호스트가 청취자를 강제로 퇴장시키는 경우입니다.

6. 호스트가 퇴장하고 방을 삭제합니다 (방이 해체되고 모든 사용자가 강제로 마이크에서 퇴장하고 체크아웃됩니다).

청중

1. 청취자가 방 로비에 들어가 방 목록을 가져옵니다.

2. 청취자가 방을 선택하여 들어갑니다.

3. 청취자가 그룹 속성을 기반으로 마이크 목록을 가져옵니다.

4. 청취자가 마이크에 올라가겠다고 신청합니다. 호스트가 동의한 후 청취자는 마이크에서 다른 사용자와 상호작용합니다.

5. 청취자가 마이크에서 나가고 방에서 퇴장합니다.

오디오 스트림 관리

음성 채팅 상호작용 시나리오에서는 일반적으로 RTC 스트림 접근 솔루션이 선택됩니다. 접근이 간단하고 빠르며, 실시간 상호작용의 낮은 지연 특성을 경험할 수 있습니다. 아래 그림은 상대적으로 고전적인 푸시-풀 스트림 아키텍처 솔루션으로, 실시간 인터랙티브 음성 채팅에서 사용자와 청중의 두 가지 역할이 있습니다.

방 내의 실시간 스트리밍 구독을 위해 TRTC는 자동 구독 및 수동 구독의 두 가지 모드를 제공합니다.

 자동 구독: 사용자가 방에 들어가면 즉시 방의 오디오 및 비디오 스트림을 수신하며, 오디오는 자동으로 재생되고 비디오는 자동으로 디코딩됩니다.

 수동 구독: 사용자가 방에 들어간 후 수동으로 startRemoteView를 호출하여 비디오 스트림의 구독 및 디코딩을 시작해야 하며, muteRemoteAudio를 호출하여 오디오 재생을 시작해야 합니다.

대부분의 시나리오에서 TRTC는 기본적으로 자동 구독 모드를 사용합니다. 사용자가 방에 들어가면 모든 앵커의 오디오 및 비디오 스트림을 구독하여 더 나은 "두 번째 열기 경험"을 얻을 수 있습니다. 수동 구독 모드는 더 나은 유연성과 사용자 정의 가능성을 제공하며, 사용자가 오디오 및 비디오 스트림을 선택적으로 구독할 수 있습니다.

녹음 및 검토

미디어 콘텐츠를 클라우드에 녹음 및 저장하거나 온라인 상호작용 콘텐츠에 대한 실시간 보안 검토가 필요한 경우, 불법 채팅룸을 신속하게 제어하여 온라인 사회 플랫폼을 보다 표준화할 수 있습니다.

TRTC 클라우드 녹음

TRTC의 최신 업그레이드된 클라우드 녹음은 클라우드 라이브 방송의 능력에 의존하지 않으며, 클라우드 라이브 방송을 우회하거나 재전송할 필요 없이 TRTC의 내부 실시간 녹음 클러스터를 사용하여 오디오 및 비디오를 녹음하여 보다 완전하고 통합된 녹음 경험을 제공합니다.

 단일 스트림 녹음: TRTC의 클라우드 녹음 기능을 사용하면 방의 각 사용자의 오디오 스트림을 별도의 파일로 녹음할 수 있습니다.

 혼합 스트림 녹음: 같은 방의 오디오 미디어 스트림을 하나의 파일로 혼합합니다.

Tianyu 콘텐츠 보안 감사

TRTC는 T-Sec Tianyu와 함께 실시간 오디오 및 비디오 콘텐츠 식별 및 경고 서비스를 제공합니다. 실시간 오디오 및 비디오 서비스를 사용하는 경우, 오디오 및 비디오 콘텐츠 식별 및 경고 전략을 글로벌하게 자동 또는 수동으로 시작할 수 있습니다:

글로벌 자동 감사

고객은 감사 전략 및 감사 스트림 유형을 지정할 수 있습니다. TRTC 클라우드는 애플리케이션의 모든 방에서 자동으로 오디오 및 비디오 콘텐츠 감사를 완료하고, 위반 정보를 고객이 지정한 콜백 URL로 전송합니다. 이 방법은 간단하고 사용하기 쉬우며 코드 접근의 작업량을 줄이지만 유연성이 떨어집니다.

TRTC와 Tianyu 콘텐츠 보안 감사 플랫폼의 결합 원리는 아래 그림과 같습니다: 라이브 콘텐츠 보안은 "덤터리" 형태로 지정된 TRTC 방에 들어가 오디오 및 비디오 스트림을 청중으로서 가져오고, 가져온 오디오 및 비디오 스트림에 대해 콘텐츠 감사를 수행한 후, 위반 정보를 고객이 지정한 HTTP/HTTPS 서비스로 콜백하여 전송합니다.

수동 맞춤 감사

고객은 Tianyu 오디오 및 비디오 스트림 인터페이스를 호출하여 오디오 및 비디오 스트림에서 불법 콘텐츠가 있는지 실시간으로 감지할 수 있습니다. 오디오 및 비디오 보안 감사 서비스는 위반 정보를 고객이 지정한 콜백 URL로 전송합니다. 이 방법은 더 유연하고 사용자 정의가 가능하지만, 감사 작업을 시작하기 위해 REST API를 호출해야 하므로 특정 접근 복잡성이 있습니다.

유령 마이크 처리 솔루션

유령 마이크는 또한 튀는 마이크 또는 블랙 마이크라고도 하며, 마이크에 올라가지 않은 사용자가 말할 수 있고 다른 사용자가 마이크 아래의 사용자의 목소리를 들을 수 있는 현상을 의미합니다. 유령 마이크 현상의 근본 원인은 비즈니스의 마이크 상태가 TRTC의 사용자 역할 상태와 일치하지 않기 때문입니다. 이 문제 발생의 몇 가지 가능한 이유가 있습니다.

 청취자가 마이크에서 나가고 마이크 목록을 업데이트했지만, 마이크 정보 콜백이 도달하지 않거나 가로채져서 청취자가 TRTC의 청중 역할로 전환하지 않고 로컬에서 마이크를 꺼두어 유휴 마이크에 있을 수 있습니다.

 청취자가 마이크에서 나가고 마이크 목록을 업데이트했습니다. 마이크 정보 콜백을 받은 후 청취자가 로컬에서 TRTC의 청중 역할 전환 인터페이스를 호출하지 않아 유휴 마이크에 있을 수 있습니다.

 앱이 무차별 공격을 받아 UserSig가 해킹당하여 해커가 호스트로 TRTC 방에 들어가 마음대로 말할 수 있습니다.

우리는 유령 마이크를 감지하여 유령 마이크를 능동적으로 식별하고 신속하게 처리할 수 있습니다. 다음은 클라이언트와 서버 각각의 유령 마이크 감지 및 처리 솔루션을 소개합니다.

클라이언트 처리 솔루션

솔루션 원리: TRTC 볼륨 콜백을 통해 현재 업링크 오디오 사용자 목록과 비즈니스 마이크 상태 목록을 비교하여 마이크에 있지 않지만 오디오 업링크가 있는 유령 마이크를 식별합니다. 과정은 아래 그림과 같습니다.

유령 마이크가 감지되면 클라이언트는 사용자의 원격 오디오 스트림을 로컬에서 음소거하고 이를 비즈니스 서버에 보고합니다. 비즈니스 서버는 사용자를 금지하거나 방에서 퇴장시킬지를 결정할 수 있습니다.

서버 측 처리 솔루션

솔루션 원리: 음성 채팅 상호작용 시나리오에서 사용자 역할은 앵커와 청중으로 나뉩니다. 오직 앵커 역할만이 로컬 오디오를 업로드할 수 있으므로 비즈니스 마이크 목록과 TRTC 사용자 역할 목록을 비교하여 유령 마이크를 감지할 수 있습니다.

TRTC는 서버 측에서 방 및 미디어 이벤트 콜백을 제공합니다. 방에 입장, 역할 전환, 방 퇴장과 같은 이벤트를 모니터링하여 현재 방의 실시간 앵커 목록을 유지할 수 있습니다. 그런 다음 TRTC의 실시간 앵커 목록과 비즈니스 전체 마이크 목록을 비교하여 유령 마이크를 쉽게 감지하고 식별한 후 방에서 퇴장시키거나 음소거하는 등의 작업을 수행할 수 있습니다.

1. 실시간 오디오 및 비디오 TRTC 콘솔은 자체 구성 콜백 정보를 지원합니다. 구성이 완료되면 이벤트 콜백 알림을 받을 수 있습니다.

2. 콜백 이벤트 패키지를 수신하고 분석하여 103/104/105 이벤트에 주의하여 현재 방의 실시간 온라인 앵커 역할 사용자 목록을 계산합니다.

{
    "EventGroupId": 1, #방 이벤트 그룹
    "EventType": 103, #방 입장 이벤트
    "CallbackTs": 1687679847972, #콜백 시간, 밀리초 단위
    "EventInfo":     {
        "RoomId": "123456", #방 번호
        "EventTs": 1687679847, #이벤트 발생 시간, 초 단위
        "EventMsTs": 1687679847899, #이벤트 발생 시간, 밀리초 단위
        "UserId": "1a99b0a9", #사용자 이름
        "Role": 20, #사용자 역할 20: 호스트; 21: 청중
        "TerminalType": 2, #단말기 유형
        "UserType": 3, #사용자 유형
        "Reason": 1 #특정 이유
    }
}

3. 마지막으로, 특정 시간(예: 마이크 목록이 변경될 때)이나 주기적으로 폴링하여 각 방의 비즈니스 마이크 목록과 TRTC의 실시간 앵커 목록을 비교함으로써 유령 마이크를 식별하고 금지하거나 방에서 퇴장시킬 수 있습니다.

마이크 전환 시 지연 방지 솔루션

문제 설명

모바일 장치의 시스템 메커니즘 차이로 인해 음성 채팅 시나리오에서 마이크를 위아래로 전환할 때 성능이 Android와 iOS 간에 일관되지 않습니다. iOS 쪽에서 마이크를 전환할 때 짧은 오디오 정지가 발생할 수 있습니다.

원인 분석

이는 iOS 시스템의 오디오 메커니즘과 관련이 있습니다. startLocalAudiostopLocalAudio 작업이 마이크 장치 권한을 얻고 해제합니다. SDK의 오디오 재수집으로 인해 AVAudioSession이 오디오 드라이버를 다시 시작하게 되어 마이크를 전환할 때 짧은 오디오 정지가 발생합니다.

솔루션

전통적인 TRTC 솔루션의 마이크 전환 타이밍은 아래 그림과 같이 표시됩니다. 역할을 전환할 때 로컬 오디오의 수집 및 해제가 시작되거나 중지됩니다. 이 솔루션은 Android 쪽에서 정상적으로 사용할 수 있습니다.

iOS 쪽에서는 마이크 다운 작업 중에 청중 역할로 전환하여 스트리밍을 중단할 수 있으며, stopLocalAudio를 호출하여 오디오 수집 및 마이크 권한을 해제하지 않도록 하여 마이크 전환의 지연을 피할 수 있습니다.

오디오 구성 모범 사례

오디오 품질과 볼륨 유형은 오디오 구성에서 서로 다른 개념입니다. TRTC에서는 로컬 오디오 수집 및 게시를 시작할 때 오디오 품질을 설정할 수 있으며, 로컬 오디오 수집 및 게시를 시작하거나 setAudioQuality(TRTCAudioQuality)를 통해 오디오 품질을 별도로 설정할 수 있습니다. 볼륨 유형은 방 입장 장면 및 오디오 품질 설정과 같은 여러 요인에 의해 결정됩니다. 또한 특정 볼륨 유형은 setSystemVolumeType(TRTCSystemVolumeType)를 통해 강제로 지정할 수 있습니다.

오디오 품질 구성 모범 사례

TRTC SDK는 현재 다양한 수직 시나리오의 음질 추구를 충족하기 위해 세 가지 신중하게 조정된 음질 모드를 제공합니다.

음질 모드

음질 열거 값

음질 매개변수

음질 설명

보컬 모드

TRTCAudioQualitySpeech

샘플링 비율: 16k; 단채널;

인코딩 비율: 16kbps

강한 네트워크 저항성과 좋은 유창성을 갖추고 있어 약한 네트워크 환경에서도 적합합니다. 온라인 회의, 음성 통화 등의 인간 음성 통신을 주로 하는 응용 시나리오에 적합합니다.

기본 모드

TRTCAudioQualityDefault

샘플링 비율: 48k; 단채널;

인코딩 비율: 50kbps

SDK 기본 모드는 보컬 모드보다 음악 복원이 더 좋으며, 동시에 데이터 전송량은 음악 모드보다 훨씬 낮고, 다양한 시나리오에 잘 적응합니다.

음악 모드

TRTCAudioQualityMusic

샘플링 비율: 48k; 풀 밴드 스테레오;

인코딩 비율: 128kbps

이 모드에서는 전송되는 오디오 데이터 양이 매우 많아 모든 주파수 대역에서 음악 신호가 고충실도 세부 복원을 달성할 수 있도록 합니다. 고충실도 음악 전송이 필요한 시나리오에 적합합니다.

위 표에서 볼 수 있듯이, 음질 효과는 인간 음성 모드에서 음악 모드로 증가하지만 전송되는 오디오 데이터 양도 증가합니다.

 음성 채팅룸 시나리오에서는 순수 인간 음성 통신을 위해 인간 음성 모드를 사용하는 것이 좋으며, 약한 네트워크 조건에서도 더 나은 유창성을 달성할 수 있습니다;

 배경 음악을 재생해야 하는 음성 채팅룸의 경우, 기본 모드 또는 음악 모드를 사용하여 좋은 오디오 세부 복원을 얻는 것이 좋습니다;

 10개 이상의 마이크가 있는 비즈니스 시나리오에서 좋은 사용자 경험을 보장하기 위해, 음악 모드는 신중하게 사용하는 것이 좋습니다.

볼륨 유형 구성 모범 사례

TRTC SDK는 현재 다양한 시나리오에서 볼륨 유형에 대한 차별화된 요구를 충족하기 위해 세 가지 시스템 볼륨 유형 제어 모드를 제공합니다.

볼륨 유형 모드

볼륨 유형 모드 열거 값

볼륨 유형 모드 설명

전체 통화 볼륨

TRTCSystemVolumeTypeVOIP

이 솔루션의 장점은 사용자가 마이크를 켜고 끌 때 오디오 모듈이 작업 모드를 전환할 필요가 없으며, 원활한 전환을 달성할 수 있다는 것입니다. 이는 사용자가 마이크를 자주 켜고 끄는 응용 시나리오에 적합합니다. 방에 들어갈 때 TRTCAppSceneVideoCall 또는 TRTCAppSceneAudioCall로 선택하면 SDK가 자동으로 이 모드를 사용합니다.

자동 전환 모드

TRTCSystemVolumeTypeAuto

"마이크에서 통화, 미디어는 마이크에서 꺼짐"이라고도 하며, 호스트가 마이크를 켤 때 통화 볼륨을 사용하고, 청중이 마이크를 껐을 때 미디어 볼륨을 사용합니다. 이는 온라인 라이브 방송 시나리오에 적합합니다. 방에 들어갈 때 TRTCAppSceneLIVE 또는 TRTCAppSceneVoiceChatRoom으로 선택하면 SDK가 자동으로 이 모드를 사용합니다.

전체 미디어 볼륨

TRTCSystemVolumeTypeMedia

통화 전반에 걸쳐 미디어 볼륨을 사용하는 것으로, 음질 요구 사항이 높은 음악 시나리오에 적합합니다. 대부분의 사용자가 외부 장치(예: 외부 사운드 카드)를 사용하는 경우 이 모드를 사용할 수 있습니다.

 통화 시나리오에서는 기본 전체 통화 볼륨을 사용하는 것이 좋으며, 이 경우 오디오 모듈을 전환할 필요가 없습니다;

 음성 채팅룸 시나리오에서는 순수 인간 음성 통신을 위해 기본 자동 전환 모드를 사용하는 것이 좋으며, 즉 마이크가 켜지면 통화가 되고, 마이크가 꺼지면 미디어가 됩니다;

 배경 음악을 재생해야 하는 음성 채팅룸에서는 전체 미디어 볼륨을 설정하여 마이크가 켜지고 꺼질 때 원격 음악이 멈추거나 볼륨이 갑자기 변화하는 것을 피할 수 있습니다.

단일 스트림 볼륨 평가

채팅방 시나리오에서 일부 고객은 대역폭을 줄이고 비용을 절감하기 위해 RTC 단일 스트림을 푸시 및 풀하는 것을 선택할 수 있으며, 청중은 방에서 혼합 스트림을 풀어봅니다. 그러나 채팅방 시나리오에서는 일반적으로 마이크에 있는 사용자의 볼륨에 따라 UI에서 해당 프롬프트가 필요합니다. 예를 들어 "사운드 파형 그래프" 또는 "볼륨 바"와 같은 것입니다. TRTC 방에서 단일 채널 오디오의 볼륨 평가 피드백 기능은 구현하기 쉽지만 순수 오디오 혼합 스트림에서 구현하려면 몇 가지 특별한 방법이 필요합니다. 두 솔루션의 구체적인 구현은 아래에서 소개됩니다.

RTC 방에서의 단일 스트림 볼륨 평가

1단계: 볼륨 프롬프트 활성화

enableAudioVolumeEvaluation 인터페이스를 통해 볼륨 콜백을 활성화하고 선택적으로 로컬 음성 감지 기능을 활성화합니다. 이 기능을 활성화하면 SDK는 로컬 사용자와 원격 푸시 스트림 사용자, 최대 볼륨 값 및 로컬 음성 감지 결과를 onUserVoiceVolume 콜백으로 피드백합니다.

2단계: 볼륨 콜백 수신

TRTCCloudListener에서 onUserVoiceVolume 콜백을 수신하여 로컬 사용자와 원격 스트리밍 사용자의 볼륨 및 원격 사용자의 최대 볼륨에 대한 피드백을 제공합니다. 볼륨에 따라 UI에서 해당 사운드 웨이브를 표시할 수 있습니다.

순수 오디오 혼합 스트림의 단일 스트림 볼륨 평가

순수 오디오 혼합 스트림의 단일 스트림 볼륨 평가 구현 과정은 위 그림과 같습니다. 마이크에 있는 호스트는 볼륨 콜백을 모니터링하고 로컬 볼륨과 원격 볼륨을 판단해야 하며, SEI 메시지 형태로 오디오 스트림에 로컬 볼륨 값과 사용자 정보를 삽입한 후 혼합 스트림 이후 청중에게 투명하게 전송합니다. 또는 방 소유자는 마이크에 있는 모든 호스트의 콜백 볼륨 값을 SEI를 통해 보낼 수 있습니다. 아래 그림은 전체 프로세스의 타이밍 다이어그램을 보여줍니다:

아래 그림과 같이 혼합 스트림에서 파싱된 SEI 메시지에서 해당 스피커의 볼륨이 표시됩니다.

최고의 음성 채팅방 사용 사례

클라우드 기반 실시간 오디오 및 비디오 통화 서비스 제공업체인 텐센트 RTC는 고객이 혁신적인 음성 채팅 제품을 출시하도록 지원했습니다. 다음은 전 세계적으로 반향을 일으킨 인기 있는 소셜 오디오 사용 사례입니다:

a. 음성 채팅방 + 미니 게임

음성 채팅방과 게임을 결합하면 플랫폼의 사회적 속성이 강화되어 상호작용 게임 요소가 통합되어 새로운 통합 게임 플레이를 가져오고 아이스 브레이킹 문제를 해결하여 연결된 마이크 시간의 지속 시간을 증가시킵니다.

대규모 멀티플레이어 게임(예: 배틀 로얄)에서 음성 도구로 사용될 뿐만 아니라 살인 미스터리 게임, 진실 또는 대담, 탁구와 같은 온라인 미니 게임에서도 일반적으로 사용됩니다. 사용자는 음성 회전을 통해 게임 릴레이에 참여하여 게임의 재미와 상호작용을 강화합니다.

b. 음성 라디오 방송국

음성 라디오는 인기 있는 소셜 오디오 기능입니다. 호스트는 음성 라디오 방송국에 라이브 오디오 스트림을 방송하고 특정 청중(주로 유료 사용자 또는 가상 선물을 보내는 사용자)을 초대하여 대화에 참여시킬 수 있습니다. 호스트는 현재 사건에 대해 토론하거나 음악을 재생하거나 이야기하거나 인터뷰를 진행하는 등의 콘텐츠를 생성하고 이를 라이브로 방송합니다. 일방향 방송 외에도 호스트는 실시간 토론에 참여하도록 청중을 초대하여 프로그램의 상호작용성과 매력을 높입니다.

c. 노래방

기본 음성 채팅을 넘어서 사용자는 온라인 KTV와 결합된 음성 채팅방에서 노래방 스타일의 상호작용에 참여할 수 있습니다. 호스트는 상호작용 음성 채팅을 위한 배경 음악을 재생하며, 일반적으로 음악 방, 학습 방 또는 청취 방과 같은 시나리오에서 사용됩니다. 또한 사용자는 노래를 선택하여 재생 목록을 만들어 솔로로 노래를 부를 수 있으며, 가수가 라이브로 공연하는 동안 다른 사용자는 텍스트 채팅에 참여하고 선물을 보낼 수 있습니다.

d. 음성 채팅방 + 아바타

음성이 유일한 의사소통 수단인 전통적인 음성 채팅방에 아바타를 통합하면 사용자 이미지, 표현 및 제스처와 같은 더 많은 정보를 전달할 수 있어 실제 얼굴을 보여주지 않고도 얼굴을 맞대고 소통하는 경험을 제공합니다. 이는 아이스 브레이킹을 돕고 사용자 관계를 심화시키며 3D 선물과 가상 배경으로 더욱 풍부해집니다.

결론

음성 채팅방의 다양성과 혁신은 디지털 커뮤니케이션을 재정의했습니다. 친밀한 대화부터 활기찬 그룹 토론, 음성 라디오 및 노래방에 이르기까지 혁신적인 엔터테인먼트 방법을 통해 글로벌 연결 및 풍부한 온라인 경험을 촉진합니다. 기술이 계속 발전함에 따라 음성 채팅방의 더 많은 창의적인 사용 사례를 기대합니다.

유사한 앱이나 플랫폼을 구축하시겠습니까? 지금 무료 10,000분을 받으세요.

무료로 시작하기

질문이 있거나 온라인에서 도움이 필요하시면 지원 팀이 항상 도움을 드릴 준비가 되어 있습니다. 언제든지 문의해 주세요 또는 텔레그램 또는 디스코드. 기술 문제에 대해서는 개발자에게 직접 도움을 요청할 수도 있습니다 Stack Overflow.