Skip to main content
Android
iOS
macOS
Web
Windows
Electron
Flutter
React Native
Python
React JS
Unity
Unreal Engine
Unreal (Blueprint)

Core concepts

RTC (Real-Time Communication) refers to real-time communication technology, which allows almost instant exchange of audio and other types of data between the sender and the receiver.

Voice SDK provide real-time audio interaction services, with multi-platform and multi-device support. This includes high-definition voice calls, interactive live streaming, as well as one-on-one and multi-group chats.

This guide introduces the key processes and concepts you need to know to use Voice SDK.

General concepts

Agora relies on the following fundamental concepts to enable seamless real-time communication:

Agora SD-RTN™

Agora's core engagement services are powered by its Software-Defined Real-time Network (SD-RTN™), a global infrastructure accessible anytime, anywhere. Unlike traditional networks, Agora SD-RTN™ is not restricted by devices, phone numbers, or telecom coverage areas. With data centers in over 200 countries and regions, it ensures sub-second latency and high availability for real-time media.

Agora SD-RTN™ enables live user engagement through real-time communication (RTC), offering:

  • Unmatched quality of service
  • High availability and accessibility
  • True scalability
  • Low cost

App ID

The App ID is a unique key generated by Agora to identify each project and provide billing and other statistical data services. The App ID is critical for connecting users within your app. It is used to initialize the Agora Engine in your app, and as one of the required keys to create authentication tokens for secure communication. Retrieve the App ID for your project using the Agora Console.

App IDs are stored on the front-end client and do not provide access control. Projects using only an App ID allow any user with the App ID to join. For access control, especially in production environments, choose the App ID + Token mechanism for user authentication when creating a new project. Without authentication tokens, your environment is open to anyone with access to your App ID.

App Certificate

An App Certificate is a unique key generated by the Agora Console to secure projects through token authentication. It is required, along with the App ID, to generate a token that proves authorization between your systems and Agora's network. App Certificates are used to generate Voice Calling authentication tokens.

Store the App Certificate securely in your backend systems. If your App Certificate is compromised or to meet security compliance requirements, you can invalidate certificates and create new ones through the Agora Console.

Tokens

A token is a dynamic key generated using the App ID, App Certificate, user ID, and expiration timestamp. Tokens authenticate and secure access to Agora's services, ensuring only authorized users can join a channel and participate in real-time communication.

Tokens are generated on your server and passed to the client for use in Voice Calling. The token generation process involves digitally signing the App ID, App Certificate, user ID, and expiration timestamp using a specific algorithm, preventing tampering or forgery.

During development and testing, use the Agora Console to generate temporary tokens. For production environments, implement a token server as part of your security infrastructure to control access to your channels.

For information on setting up a token server for generating and managing tokens, refer to the guide on Secure authentication with tokens.

Channel

In Agora's platform, a channel is a way of grouping users together and is identified by a unique channel name. Users who connect to the same channel can communicate with each other. A channel is created when the first user joins and ceases to exist when the last user leaves.

Channels are created by calling the methods for transmitting real-time data. Agora uses different channels to transmit different types of data:

  • A Voice SDK channel is used for transmitting audio data.
  • A Signaling channel is used for transmitting messaging or signaling data.

These channels are independent of each other.

Additional services provided by Agora, such as Cloud Recording and Speech to Text, join the Voice SDK channel to provide real-time recording, transmission acceleration, media playback, and content moderation.

Channel profile

The Voice SDK applies different optimization methods according to the selected channel profile. Agora supports the following channel profiles:

Channel profileDescription
CommunicationThis profile is suitable for one-on-one or group calls, where all users in the channel talk freely.
Live BroadcastingIn a live streaming channel, users have two client roles: host and audience. The host sends and receives streams, while the audience only receives streams with the sending function disabled.

Stream

A stream is a sequence of digitally encoded, coherent signals that contain media data. Users in a channel publish local streams and subscribe to remote streams from other users.

Publish

Publishing is the act of sending a user’s audio data to the channel. Usually, the published stream is created by the audio data sampled from a microphone. You can also publish media streams from other sources, such as an online music file.

After successfully publishing a stream, the SDK uses it to send media data to other users in the channel. Users communicate with each other in real-time by publishing local streams and subscribing to remote streams.

Subscribe

Subscribing is the act of receiving media streams published by remote users to the channel. A user receives audio data from other users by subscribing to one or more of their streams. You either directly play the subscribed streams or process incoming data for other purposes such as recording.

User ID

In Voice Calling, the UID is an integer value that uniquely identifies a user within the context of a channel. When joining a channel, you have the option to either assign a specific UID to the user or pass 0 or null and allow Agora to automatically generate and assign a UID to the user. If two users attempt to join the same channel with the same UID, it can lead to unexpected behavior.

The UID is used by Agora's services and components to identify and manage users within a channel. Ensure that UIDs are properly assigned to prevent conflicts.

User role

The user role defines whether a user in a channel has the permission to publish streams. There are two user roles:

  • Host: A user who can publish streams to a channel.
  • Audience: A User who can only subscribe to remote media streams. A user with this role cannot publish streams.

RtcConnection

The connection between the SDK and the channel. When publishing or subscribing to multiple streams in multiple channels, a connection is used to specify the target channel.

Agora Console

Agora Console is the main dashboard where you manage your Agora projects and services. Before you can use Agora's SDKs, you must first create a project in the Agora Console. See Agora account management for details.

Create project in Agora Console

Agora Console provides an intuitive interface for developers to query and manage their Agora account. After registering an Agora account, you use the Agora Console to perform the following tasks:

  • Manage your account
  • Create and configure Agora projects and services
  • Get an App ID and the App certificate
  • Generate temporary tokens for development and testing
  • Manage members and roles
  • Check call quality and usage
  • Check bills and make payments
  • Access product resources

See Agora account management for details on how to manage all aspects of your Agora account.

Agora also provides RESTful APIs that you use to implement features such as creating a project and fetching usage numbers programmatically.

Audio concepts

Basic audio interaction workflow

The following diagram shows the basic workflow of using the Voice SDK to implement basic audio interaction.

orientation_adaptive_locked_landscape

Agora relies on the following fundamental concepts to enable seamless real-time communication:

Audio module

In audio interaction, the main functions of the audio module are as shown in the figure below:

Audio module functions

After you call registerAudioFrameObserver, you can obtain the raw audio data at the following observation points in the audio transmission process:

  1. Obtain the raw audio data of ear monitoring through the onEarMonitoringAudioFrame callback.
  2. Obtain the captured raw audio data through the onRecordAudioFrame callback.
  3. Obtain the raw audio playback data of each individual stream through the onPlaybackAudioFrameBeforeMixing callback.
  4. Obtain the raw audio playback data of all mixed streams through the onPlaybackAudioFrame callback.
  5. Obtain the raw audio data after mixing the captured and playback audio through the onMixedAudioFrame callback.
    (5) onMixedAudioFrame = (2) onRecordAudioFrame + (4) onPlaybackAudioFrame

Audio routing

The audio output device used by the app when playing audio. Common audio routes include wired headphones, earpieces, speakers, Bluetooth headphones, and others.

The APIs used by the audio module are as follows:

  • Enable local audio collection: enableLocalAudio
  • Set local playback device: setPlaybackDevice
  • Set up audio routing: setDefaultAudioRouteToSpeakerphone

Voice Calling