说明:
语音对讲,用于远端设备和现场设备进行语音交互。 语音传输会随操控会话建立自动建立。SDK 默认只打开了上行音频。如需使用双向音频,请准备相关音频硬件。增加相关配置并重启 SDK。
硬件设备准备
设备端 | 上行音频 : 现场设备->远端设备 | 下行音频: 远端设备->现场设备 |
现场设备 | 麦克风 | 扬声器 |
远端设备 | 扬声器 | 麦克风 |
音频配置修改
开启音频开关(全平台)
开启音频接收,将 audio_receive 配置为1; 开启音频采集,将audio_enable 配置为1。
设备端 | 上行音频 : 现场设备 -> 远端设备 | 下行音频: 远端设备 -> 现场设备 |
现场设备 | "audio_enable":1 | "audio_receive":1 |
远端设备 | "audio_receive":1 | "audio_enable":1 |
设置音频设备(Linux 系统)
SDK 默认使用系统默认的音频播放和采集设备,Linux 平台下如果目标音频设备不是系统默认设备,可通过配置指定使用对应的音频设备。
配置项 | 配置说明 | 配置举例 |
音频播放设备 | audio_play":"hw:#Card,#Device,#SubDevice 其中 #Card , #Device , #SubDevice 为声卡设备编号,Linux 平台可通过 aplay -l 查询目标设备的 card、device、subdevice 的编号。 | 例如,目标设备是 Card 0, Device 0, SubDevice #0: audio_play":"hw:0,0,0 |
音频采集设备 | audio_record":"hw:#Card,#Device,#SubDevice 其中 #Card , #Device , #SubDevice 为声卡设备编号,Linux 平台可通过 arecord -l 查询目标设备的 card、device、subdevice 的编号 | 例如,目标设备是 Card 0, Device 0, SubDevice #0: audio_record":"hw:0,0,0 |
示例:执行命令 "aplay -l ", 可以查看音频播放设备。


如图使用的播放设备为"card 0, device 3, subdevice 0", 则在配置文件 config.json 中增加配置节点"audio_play":"hw:0,3,0"。
通过 SDK 接口管理音频
动态选择音频设备(Linux 系统)
1. TRRO_getDeviceCount 获取目标类型的音频设备列表。
2. TRRO_getDeviceName 获取设备名称, 并通过名称过滤, 找到目标名称的音频设备编号。
3. TRRO_setCurrentDevice 将对应设备编号的音频设备设置为当前使用的音频设备。
函数列表 | 描述 |
获取音频采集/播放设备数量 | |
获取音频采集/播放设备名称 | |
更改当前音频采集/播放设备 |
应用输入音频数据 (全平台)
当应用需要自行音频采集时,可使用外部输入 PCM 音频数据接口,输入音频数据。
需打开音频配置 "audio_enable":1 以及外部音频输入配置"audio_external":1。
每次音频数据输入长度对应10ms音频数据。
输入音频 PCM 数据格式须为 16bit 采样小端对齐,即 s16le 格式。
输入音频采样率支持 8k/16k/24k/32k/44.1k/48k 等,48k 采样对应输入为48000。
/*** @name TRRO_externAudioData* @brief 外部音频数据输入(pcm数据), 16位音频采样* @param[in] data 源数据* @param[in] data_size 数据大小* @param[in] channel 音频声道数* @param[in] sample_rate 音频采样率* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_externAudioData(const char* data, int data_size, int channel, int sample_rate);
应用播放音频数据(全平台)
当应用需要自行音频播放时,可使用 PCM 音频数据接口回调,获取 SDK 混流后的音频数据。使用 PCM 音频数据回调时,SDK 内部音频播放会关闭。
1. 需打开音频配置 "audio_receive":1 以及外部音频播放配置"audio_play":“outside”。
2. 每次音频数据回调长度对应10ms音频数据。
3. 输出音频 PCM 数据为 16bit 采样小端对齐,即 s16le 格式。
4. 输出音频采样率为 48kHz。
/*** @name TRRO_onRemoteMixAuidoFrame* @brief 对端多路混音后音频原始数据回调* @param[in] context 回调上下文指针, 返回注册回调函数时传入的context* @param[in] data 音频PCM数据 10ms 16bits,小端对齐* @param[in] length 数据长度* @param[in] channel 音频声道数目,如单声道为1,双声道为2,多声道为N* @param[in] sample_rate 音频采样率* @return : void*/typedef void TRRO_onRemoteMixAuidoFrame(void* context, const char* data, int length, int channel, int sample_rate);/*** @name TRRO_registerRemoteMixAuidoFrameCallback* @brief 注册远端混音音频数据回调函数* @param[in] context 上下文* @param[in] callback 回调函数* @return 1 for success, other failed*/extern "C" TRRO_EXPORT int TRRO_registerRemoteMixAuidoFrameCallback(void* context, TRRO_onRemoteMixAuidoFrame * callback);