语音消息

更新时间: 2024/05/24 17:38:20

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

功能说明

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

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

调用时序

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

实现功能

注册事件回调

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

示例代码

C#public class MyVoiceEventsHandler : IVoiceEngineCallback
{

    public void OnAuth(RtcErrorCode errorCode)
    {
        
    }

    public void OnRecordCompleted(RtcErrorCode errorCode, string filePath)
    {
        
    }

    public void OnPlayCompleted(RtcErrorCode errorCode, string filePath)
    {
        
    }

    public void OnUploadCompleted(RtcErrorCode errorCode, string filePath, string fileID)
    {

    }

    public void OnDownloadCompleted(RtcErrorCode errorCode, string filePath, string fileID)
    {

    }

    public void OnSpeechToTextCompleted(RtcErrorCode errorCode, string fileID, string text)
    {
       
    }

    public void OnRecordingVolume(int volume)
    {
        
    }

    public void OnPlayingVolume(int volume)
    {
        
    }
}

IRtcEngine rtcEngine = IRtcEngine.GetInstance();
void SetEvents(){
    var voiceEngine = rtcEngine.VoiceEngine;

    //监听事件
    var voiceHandler = MyVoiceEventsHandler();//请自行保证对象的生命周期。
    voiceEngine.SetEvent(voiceHandler);

    //取消事件监听
    voiceEngine.SetEvent(null);
}

鉴权

语音消息功能需要独立的 Token 鉴权。调用 IRtcVoiceEngine.ApplyAuth 接口实现鉴权功能,并由 IVoiceEngineCallback.OnAuth 事件通知。

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

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

示例代码

C#IRtcEngine rtcEngine = IRtcEngine.GetInstance();
void Auth(){
    var voiceEngine = rtcEngine.VoiceEngine;

    long uid = 123456; //your user id
    string token = "YOUR TOKEN";
    voiceEngine.ApplyAuth(uid,token);
}

录制语音

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

语音录制的相关接口为:

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

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

示例代码

C#
IRtcEngine rtcEngine = IRtcEngine.GetInstance();
void AudioFileRecord(){
    var voiceEngine = rtcEngine.VoiceEngine;

    //开始录制
    string recordFile = "xxxxx/xxx.aac"; //您的录制文件存放路径
    voiceEngine.StartRecording(recordFile);

    //结束录制
    voiceEngine.StopRecording();
}

播放语音

语音录制的相关接口为:

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

示例代码

C#
IRtcEngine rtcEngine = IRtcEngine.GetInstance();
void AudioFilePlay(){
    var voiceEngine = rtcEngine.VoiceEngine;

    //开始播放
    string recordFile = "xxxxx/xxx.aac"; //您的录制文件存放路径
    voiceEngine.PlayRecordedFile(recordFile);

    //结束播放
    voiceEngine.StopPlayFile();
}

上传文件

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

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

示例代码

C#
IRtcEngine rtcEngine = IRtcEngine.GetInstance();
void AudioFileUpload(){
    var voiceEngine = rtcEngine.VoiceEngine;

    //上传
    string recordFile = "xxxxx/xxx.aac"; //您的录制文件存放路径
    voiceEngine.UploadRecordedFile(recordFile);
}

下载文件

使用 IRtcVoiceEngine.DownloadRecordedFile 进行文件下载前,请先使用 IRtcVoiceEngine.ApplyAuth 进行鉴权,否则会返回失败。

完成下载或者失败,会通过 IVoiceEngineCallback.OnDownloadCompleted 事件通知。

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

示例代码

C#
IRtcEngine rtcEngine = IRtcEngine.GetInstance();
void AudioFileUpload(){
    var voiceEngine = rtcEngine.VoiceEngine;

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

语音转文字

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

完成语音转文字或者失败,会通过 IVoiceEngineCallback.OnSpeechToTextCompleted 事件通知。

示例代码

C#));
IRtcEngine rtcEngine = IRtcEngine.GetInstance();
void AudioFileUpload(){
    var voiceEngine = rtcEngine.VoiceEngine;

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