实时互动-工业能源版 语音对讲

参考 现场设备配置说明 及 远端设备配置说明 ,修改启动 JSON 配置,开启音频开关并设置音频设备。

相关产品
实时互动-工业能源版 产品页,含版本规格、价格与购买入口。

注意:说明:

注意:语音对讲,用于远端设备和现场设备进行语音交互。 语音传输会随操控会话建立自动建立。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"。

四、动态选择音频设备(Linux 系统)

可使用 C/C++ 现场设备 SDK API 中音频控制类 API 接口来设置当前音频设备.

1. TRRO_getDeviceCount 获取目标类型的音频设备列表。

2. TRRO_getDeviceName 获取设备名称, 并通过名称过滤, 找到目标名称的音频设备编号。

3. TRRO_setCurrentDevice 将对应设备编号的音频设备设置为当前使用的音频设备。

函数列表 描述
TRRO_getDeviceCount 获取音频采集/播放设备数量
TRRO_getDeviceName 获取音频采集/播放设备名称
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);

赞 (0)
上一篇 4天前
下一篇 4天前