语音消息

更新时间: 2025/06/11 16:45:39

本文介绍了网易云信音视频通话 RTC SDK 中,语音消息 功能的相应使用示例代码,根据本文这些示例代码,您可以完成应用中语音消息的开发。

功能说明

网易云信音视频通话 RTC SDK 支持 语音消息 功能,方便 Unreal Engine 开发者基于游戏多媒体引擎客户端 API 调试和接入。通过实现客户端内的实时语音消息、语音转文字等能力,丰富了玩家之间的沟通方式和游戏互动深度。例如:

  • 在协作场景中,可以使用语音录制、语音上传、语音下载等能力,让玩家可以便捷地录制语音信息。
  • 在游戏大世界场景中,可以使用语音转文字功能,加强游戏社交属性。

调用时序

sequenceDiagram
autoNumber
participant 您的应用
participant 网易云信 RTC SDK
participant 网易云信服务端
您的应用 ->> 网易云信 RTC SDK: initialize 初始化 SDK IRtcEngine
您的应用 ->> 网易云信 RTC SDK: IRtcVoiceEngine::setEvent 注册事件回调
您的应用 ->> 网易云信 RTC SDK: applyAuth 进行单独的语音消息 Token 鉴权
网易云信 RTC SDK ->> 网易云信服务端: 校验 Token
网易云信服务端 -->> 网易云信 RTC SDK: 校验结果
网易云信 RTC SDK -->> 您的应用: onAuth 鉴权回调
note over 您的应用,网易云信服务端: 功能实现(云端交互省略展示)
您的应用 ->> 网易云信 RTC SDK: 录制语音
网易云信 RTC SDK -->> 您的应用: onRecordComplete 录制完成
您的应用 ->> 网易云信 RTC SDK: 播放语音
网易云信 RTC SDK -->> 您的应用: onPlayComplete 播放完成
您的应用 ->> 网易云信 RTC SDK: 上传文件
网易云信 RTC SDK -->> 您的应用: onUploadComplete 返回上传结果
您的应用 ->> 网易云信 RTC SDK: 下载文件
网易云信 RTC SDK -->> 您的应用: onDownloadComplete 返回下载结果 
您的应用 ->> 网易云信 RTC SDK: 语音转文字
网易云信 RTC SDK -->> 您的应用: onSpeechToTextComplete 返回转换结果

实现功能

注册事件回调

语音消息功能通过 IRtcVoiceEngine::setEvent 注册事件回调,您可以继承 IRtcVoiceEngineEventHandler 实现相应的方法来接收事件通知。

示例代码

c++class MyVoiceEventsHandler : public IRtcVoiceEngineEventHandler
{
public:
  void onAuth(int error_code) override {

  }

  //others
}
MyVoiceEventsHandler voiceHandler;//请自行保证对象的生命周期。

//监听事件
auto voiceEngine = nertc_engine_->getVoiceEngine();
voiceEngine->setEvent(&voiceHandler);

//取消事件监听
voiceEngine->setEvent(nullptr);

鉴权

语音消息功能需要独立的 Token 鉴权。调用 IRtcVoiceEngine::applyAuth 接口实现鉴权功能,并由 IRtcVoiceEngineEventHandler::onAuth 事件通知。

本地的录制和播放不依赖此鉴权,但是上传文件、下载文件、语音转文字等服务依赖此鉴权,若鉴权没有成功,则上述功能将不可用。

不支持在 调试模式 下使用语音消息功能,即 Token 不能为空。如需接入 SDK 进行测试,请 提交工单 联系网易云信技术支持工程师。

示例代码

c++auto voiceEngine = nertc_engine_->getVoiceEngine();

uint64_t uid = 123456; //your user id
std::string token = "YOUR TOKEN";
voiceEngine->applyAuth(uid,token.c_str());

录制语音

语音消息录制仅支持 .aac 文件格式。因为 RTC SDK 不会自动创建文件夹,指定的录制文件所在的文件路径必须要保证已存在。

语音录制的相关接口为:

语音消息的长度默认是 60 秒,您可以通过 IRtcVoiceEngine::setMaxMessageLength 接口设置最大的录制时长。

同时开启录制和播放时,请不要使用同一个文件。

示例代码

c++auto voiceEngine = nertc_engine_->getVoiceEngine();

//开始录制
std::string recordFile = "xxxxx/xxx.aac"; //您的录制文件存放路径
voiceEngine->startRecording(recordFile.c_str());

//结束录制
voiceEngine->stopRecording();

播放语音

语音录制的相关接口为:

如果您需要监听事件通知,则可以监听:

示例代码

c++auto voiceEngine = nertc_engine_->getVoiceEngine();

//播放
std::string recordFile = "xxxxx/xxx.aac"; //your file path
voiceEngine->playRecordedFile(recordFile.c_str());

//停止
voiceEngine->stopPlayFile();

上传文件

使用 IRtcVoiceEngine::uploadRecordedFile 上传语音消息文件,上传成功或者失败,都会通过 IRtcVoiceEngineEventHandler::onUploadComplete 事件通知。上传成功后,会返回 file_id,此文件 ID 用于文件下载以及语音识别等功能接口。

上传语音消息前,请先使用 IRtcVoiceEngine::applyAuth 进行鉴权,否则会返回失败。

示例代码

c++auto voiceEngine = nertc_engine_->getVoiceEngine();

//上传
std::string recordFile = "xxxxx/xxx.aac"; //your file path
voiceEngine->uploadRecordedFile(recordFile.c_str());

下载文件

使用 IRtcVoiceEngine::downloadRecordedFile 进行文件下载前,请先使用 IRtcVoiceEngine::applyAuth 进行鉴权,否则会返回失败。

完成下载或者失败,会通过 IRtcVoiceEngineEventHandler::onDownloadComplete 事件通知。

上传语音消息前,请先使用 IRtcVoiceEngine::applyAuth 进行鉴权,否则会返回失败。

示例代码

c++auto voiceEngine = nertc_engine_->getVoiceEngine();

//下载
std::string fileID = "xxxxx"; //通过上传接口获得此文件 ID
std::string downloadFile = "xxxxx/xxx.aac"; //your file path
voiceEngine->downloadRecordedFile(fileID.c_str(),downloadFile.c_str());

语音转文字

使用 IRtcVoiceEngine::speechToText 进行语音转文字前,请先使用 IRtcVoiceEngine::applyAuth 进行鉴权,否则会返回失败。

完成语音转文字或者失败,会通过 IRtcVoiceEngineEventHandler::onSpeechToTextComplete 事件通知。

示例代码

c++auto voiceEngine = nertc_engine_->getVoiceEngine();

//语音转文字
std::string fileID = "xxxxx"; //通过上传接口获得此文件 ID
voiceEngine->speechToText(fileID.c_str());
此文档是否对你有帮助?
有帮助
去反馈
  • 功能说明
  • 调用时序
  • 实现功能
  • 注册事件回调
  • 鉴权
  • 录制语音
  • 播放语音
  • 上传文件
  • 下载文件
  • 语音转文字