tencent cloud

文档反馈

语音消息及转文本

最后更新时间:2022-09-07 14:46:09

    为方便 iOS 开发者调试和接入腾讯云游戏多媒体引擎产品 API,这里向您介绍适用于 iOS 开发的接入技术文档。

    说明:

    此文档对应 GME sdk version:v2.8。

    使用 GME 重要事项

    GME 分为两个部分,提供实时语音服务、语音消息及转文本服务,使用这两个服务都依赖 InitEngine 和 Poll 等核心接口。

    关于 InitEngine 接口

    例如使用了实时语音服务,如果也需要使用语音消息服务,只需要调用一次 InitEngine 初始化接口

    image

    重要步骤

    重点提示

    • GME 使用前请对工程进行配置,否则 SDK 不生效。
    • GME 的接口调用成功后返回值为 QAVError.OK,数值为 0。
    • GME 的接口调用要在同一个线程下。
    • GME 需要周期性的调用 Poll 接口触发事件回调。
    • 错误码详情可参考 错误码ErrorCode

    核心接口

    未初始化前,SDK 处于未初始化阶段,需要通过接口 Init 初始化 SDK,才可以使用实时语音服务、语音消息及转文字服务。

    在使用 GME 的任何接口之前,都需要先调用 Init 接口。

    使用问题请参见 一般性问题

    接口 接口含义
    InitEngine 初始化 GME
    Poll 触发事件回调
    Pause 系统暂停
    Resume 系统恢复
    Uninit 反初始化 GME
    SetDefaultAudienceAudioCategory 设置设备后台播放声音

    引用头文件

    #import "GMESDK/TMGEngine.h"
    #import "GMESDK/QAVAuthBuffer.h"
    

    获取单例

    在使用语音功能时,需要首先获取 ITMGContext 对象。

    + (ITMGContext*) GetInstance;
    
    

    示例代码

    //TMGSampleViewController.m
    ITMGContext* _context = [ITMGContext GetInstance];
    

    设置回调

    接口类采用 Delegate 方法用于向应用程序发送回调通知。将回调函数注册给 SDK,用于接收回调的信息。

    示例代码

    声明采用 ITMGDelegate。

    @interface TMGDemoViewController ()<ITMGDelegate>{}
    ITMGDelegate < NSObject >
    //TMGSampleViewController.m
    ITMGContext* _context = [ITMGContext GetInstance];
    _context.TMGDelegate = [DispatchCenter getInstance];
    

    在 OnEvent 中处理接口的回调信息,消息类型参考 ITMG_MAIN_EVENT_TYPE,消息内容为一个字典,解析出接口回调的内容。

    函数原型

    - (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data;
    

    示例代码

    //TMGRealTimeViewController.m
    TMGRealTimeViewController ()< ITMGDelegate >
    - (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data {
    NSString *log = [NSString stringWithFormat:@"OnEvent:%d,data:%@", (int)eventType, data];
    [self showLog:log];
    NSLog(@"====%@====", log);
    switch (eventType) {
        // Step 6/11 : Perform the enter room event
        case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: {
            int result = ((NSNumber *)[data objectForKey:@"result"]).intValue;
            NSString *error_info = [data objectForKey:@"error_info"];
             [self showLog:[NSString stringWithFormat:@"OnEnterRoomComplete:%d msg:(%@)", result, error_info]];
             if (result == 0) {
                [self updateStatusEnterRoom:YES];
            }
        }
        break;
    }
    }
    //需要参考 DispatchCenter.h、DispatchCenter.m
    

    初始化 SDK

    • 此接口用于初始化 GME 服务,建议应用侧在应用初始化时候调用。
    • **参数 sdkAppId 获取请参见 接入指引**。
    • OpenId 用于唯一标识一个用户,目前只支持 INT64,规则由 App 开发者自行制定,App 内不重复即可

    函数原型

    -(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;
    
    参数 类型 含义
    sdkAppId String 来自 腾讯云控制台 的 GME 服务提供的 AppId。
    OpenId String OpenId 只支持 Int64 类型(转为 string 传入)。
    返回值 处理
    QAV_OK= 0 初始化 SDK 成功
    QAV_ERR_SDK_NOT_FULL_UPDATE= 7015 检查 SDK 文件是否完整,建议删除后重新导入 SDK

    出现返回值 AV_ERR_SDK_NOT_FULL_UPDATE 时,此返回值只有提示作用,并不会造成初始化失败。

    • 如果在接入过程中提示此错误,请根据提示检查 SDK 文件是否完整、SDK 文件版本是否一致。
    • 如果是在导出可执行文件之后出现此返回值,请忽略此错误,并尽量不在 UI 中提示。

    示例代码

    _openId = _userIdText.text;
    _appId = _appIdText.text;
    [[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];
    

    触发事件回调

    通过在 update 里面周期的调用 Poll 可以触发事件回调。GME 需要周期性的调用 Poll 接口触发事件回调。如果没有调用 Poll 的话,会导致整个 SDK 服务运行异常。
    可参考 Demo 中的 EnginePollHelper.m 文件。

    函数原型

    -(void)Poll;
    

    示例代码

    [[ITMGContext GetInstance] Poll];
    

    系统暂停

    当系统发生 Pause 事件时,需要同时通知引擎进行 Pause。
    如果需要在退后台的时候暂停语音,可以在退后台的监听代码中调用 Pause 接口,恢复前台的监听事件中调用 Resume 接口。

    函数原型

    -(QAVResult)Pause;
    

    系统恢复

    当系统发生 Resume 事件时,需要同时通知引擎进行 Resume。Resume 接口只恢复实时语音。

    函数原型

    -(QAVResult)Resume;
    

    反初始化 SDK

    反初始化 SDK,进入未初始化状态。切换账号需要反初始化

    函数原型

    -(int)Uninit;
    

    示例代码

    [[ITMGContext GetInstance] Uninit];
    

    iOS 设备音频设置

    此接口用于设置后台播放声音,以及 GME 音频不受物理静音按键、锁屏的影响。例如拉起通知中心或者控制中心时候依然可以接收播放 GME 音频。此接口需要在进房前调用。
    同时,应用侧有如下两点需要注意:

    • 退后台时没有暂停音频引擎的采集和播放(即 PauseAudio)。
    • App 的 Info.plist 中,需要至少增加 key:Required background modes,string:App plays audio or streams audio/video using AirPlay。
    注意:

    建议开发者调用此接口设置音频。

    函数原型

    -(QAVResult)SetDefaultAudienceAudioCategory:(ITMG_AUDIO_CATEGORY)audioCategory;
    
    类型 参数代表 含义
    ITMG_CATEGORY_AMBIENT 0 退后台没有声音(默认)
    ITMG_CATEGORY_PLAYBACK 1 退后台有声音

    具体实现为修改 kAudioSessionProperty_AudioCategory,相关资料请参见 Apple 官方文档

    示例代码

    [[ITMGContext GetInstance]SetDefaultAudienceAudioCategory:ITMG_CATEGORY_AMBIENT];
    

    语音消息及转文字

    语音消息,录制并发送一段语音消息,同时可以将语音消息转成文字,也可以同时将文字进行翻译。

    说明:

    建议使用流式语音转文字服务

    语音消息及语音转文字流程图

    接入语音消息及转文本服务

    语音消息及转文字相关接口

    接口 接口含义
    ApplyPTTAuthbuffer 鉴权初始化
    SetMaxMessageLength 限制最大语音信息时长
    StartRecording 启动录音
    StartRecordingWithStreamingRecognition 启动流式录音
    PauseRecording 暂停录音
    ResumeRecording 恢复录音
    StopRecording 停止录音
    CancelRecording 取消录音
    GetMicLevel 获取实时麦克风音量
    SetMicVolume 设置录制音量
    GetMicVolume 获取录制音量
    GetSpeakerLevel 获取实时扬声器音量
    SetSpeakerVolume 设置播放音量
    GetSpeakerVolume 获取播放音量
    UploadRecordedFile 上传语音文件
    DownloadRecordedFile 下载语音文件
    PlayRecordedFile 播放语音
    StopPlayFile 停止播放语音
    GetFileSize 语音文件的大小
    GetVoiceFileDuration 语音文件的时长
    SpeechToText 语音识别成文字

    初始化 SDK

    未初始化前,SDK 处于未初始化阶段,需要通过接口 Init 初始化 SDK,才可以使用实时语音及语音消息服务。

    使用问题请参见 语音转文本问题

    鉴权信息

    生成 AuthBuffer,用于相关功能的加密和鉴权,如正式发布请使用后台部署密钥,后台部署请参见 鉴权密钥

    使用语音消息及转文字服务获取鉴权时,房间号参数必须填 null。

    函数原型

    @interface QAVAuthBuffer : NSObject
    + (NSData*) GenAuthBuffer:(unsigned int)appId roomId:(NSString*)roomId openID:(NSString*)openID key:(NSString*)key;
    + @end
    
    参数 类型 含义
    appId int 来自腾讯云控制台的 AppId 号码。
    roomId NSString 填 null
    openID NSString 用户标识。与 Init 时候的 openID 相同。
    key NSString 来自腾讯云 控制台 的权限密钥。

    示例代码

    #import "GMESDK/QAVAuthBuffer.h"
    NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomId:_roomId openID:_openId key:AUTHKEY];
    

    鉴权初始化

    在初始化 SDK 之后调用鉴权初始化,authBuffer 的获取参见上文实时语音鉴权信息接口 genAuthBuffer。

    函数原型

    public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);
    
    参数 类型 含义
    authBuffer NSData* 鉴权

    示例代码

    [[[ITMGContext GetInstance]GetPTT]ApplyPTTAuthbuffer:(NSData *)authBuffer];
    

    流式语音识别

    启动流式语音识别

    此接口用于启动流式语音识别,同时在回调中会有实时的语音转文字返回,可以指定语言进行识别,也可以将语音中识别到的信息翻译成指定的语言返回。停止录音调用 StopRecording,停止之后才有回调。

    函数原型

    -(int)StartRecordingWithStreamingRecognition:(NSString *)filePath;
    -(int)StartRecordingWithStreamingRecognition:(NSString *)filePath language:(NSString*)speechLanguage translatelanguage:(NSString*)translateLanguage;
    
    参数 类型 含义
    filePath String 存放的语音路径
    speechLanguage String 识别成指定文字的语言参数,参数请参见 语音转文字的语言参数参考列表
    translateLanguage String 翻译成指定文字的语言参数,参数请参见 语音转文字的语言参数参考列表(此参数暂不可用,请填写与 speechLanguage 相同的参数)

    示例代码

    recordfilePath = [docDir stringByAppendingFormat:@"/test_%d.ptt",index++];
    [[[ITMGContext GetInstance] GetPTT] StartRecordingWithStreamingRecognition:recordfilePath language:@"cmn-Hans-CN"];
    

    流式语音识别的回调

    启动流式语音识别后,需要在回调函数 OnEvent 中监听回调消息,事件消息分为以下两个:

    • ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE 是在停止录制并完成识别后才返回文字,相当于一段话说完才会返回识别的文字。
    • ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING 是在录音过程中就会实时返回识别到的文字,相当于边说话边返回识别到的文字。

    根据需求在 OnEvent 函数中对相应事件消息进行判断。传递的参数包含以下四个信息。

    消息名称 含义
    result 用于判断流式语音识别是否成功的返回码
    text 语音转文字识别的文本
    file_path 录音存放的本地地址
    file_id 录音在后台的 url 地址,录音在服务器存放90天
    注意:

    监听 ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING 消息时,file_id 为空。

    错误码

    错误码 含义 处理方式
    32775 流式语音转文本失败,但是录音成功 调用 UploadRecordedFile 接口上传录音,再调用 SpeechToText 接口进行语音转文字操作
    32777 流式语音转文本失败,但是录音成功,上传成功 返回的信息中有上传成功的后台 url 地址,调用 SpeechToText 接口进行语音转文字操作
    32786 流式语音转文本失败 在流式录制状态当中,请等待流式录制接口执行结果返回

    示例代码

    - (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data
    {
    NSNumber *number = [data objectForKey:@"result"];
    switch (eventType)
    {
      case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
      {
          if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
          {
              donwLoadUrlPath = data[@"file_id"];
              
              recordfilePath = [data objectForKey:@"file_path"];
              _localFileField.text = recordfilePath;
              
              _donwloadUrlField.text = [data objectForKey:@"file_id"] ;
              
              UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);
              _audiotoTextField.text = [data objectForKey:@"text"] ;
          }
     
      }
          break;
    }    
    }    
    

    语音消息录制

    限制最大语音信息时长

    限制最大语音消息的长度,最大支持58秒。

    函数原型

    -(QAVResult)SetMaxMessageLength:(int)msTime
    
    参数 类型 含义
    msTime int 语音时长,单位 ms,区间为 1000 < msTime < 58000

    示例代码

    [[[ITMGContext GetInstance]GetPTT]SetMaxMessageLength:(int)msTime];

    启动录音

    此接口用于启动录音。需要将录音文件上传后才可以进行语音转文字等操作。停止录音调用 StopRecording

    函数原型

    -(int)StartRecording:(NSString*)filePath;
    参数 类型 含义
    filePath NSString 存放的语音路径

    示例代码

    recordfilePath =[docDir stringByAppendingFormat:@"/test_%d.ptt",index++];
    [[[ITMGContext GetInstance]GetPTT]StartRecording:recordfilePath];

    停止录音

    此接口用于停止录音。此接口为异步接口,停止录音后会有录音完成回调,成功之后录音文件才可用。

    函数原型

    -(QAVResult)StopRecording;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]StopRecording];
    

    启动录音的回调

    停止录音调用StopRecording。停止录音后才有启动录音的回调。

    启动录音完成后的回调调用函数 OnEvent,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。
    传递的参数包含两个信息,result 和 file_path。

    错误码

    错误码值 原因 建议方案
    4097 参数为空 检查代码中接口参数是否正确
    4098 初始化错误 检查设备是否被占用,或者权限是否正常,是否初始化正常
    4099 正在录制中 确保在正确的时机使用 SDK 录制功能
    4100 没有采集到音频数据 检查麦克风设备是否正常
    4101 录音时,录制文件访问错误 确保文件存在,文件路径的合法性
    4102 麦克风未授权错误 使用 SDK 需要麦克风权限,添加权限请参考对应引擎或平台的 SDK 工程配置文档
    4103 录音时间太短错误 首先,限制录音时长的单位为毫秒,检查参数是否正确;其次,录音时长要1000毫秒以上才能成功录制
    4104 没有启动录音操作 检查是否已经调用启动录音接口

    示例代码

    -(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
    NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
    switch (eventType) {
        case ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE:
        {
     //录音回调
        }
            break;
    }
    }
    

    暂停录音

    此接口用于暂停录音。如需恢复录音请调用接口 ResumeRecording。

    函数原型

    -(int)PauseRecording;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]PauseRecording;
    

    恢复录音

    此接口用于恢复录音。

    函数原型

    -(int)ResumeRecording;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]ResumeRecording;
    

    取消录音

    调用此接口取消录音。取消之后没有回调。

    函数原型

    -(QAVResult)CancelRecording;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]CancelRecording];
    

    获取语音消息麦克风实时音量

    此接口用于获取麦克风实时音量,返回值为 int 类型,值域为0 - 200。

    说明:

    此接口不同于实时语音接口,此接口在 ITMGPTT 下。

    函数原型

    -(QAVResult)GetMicLevel;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]GetMicLevel];
    

    设置语音消息录制音量

    此接口用于设置离线语音录制音量,值域为0 - 200。

    说明:

    此接口不同于实时语音接口,此接口在 ITMGPTT 下。

    函数原型

    -(QAVResult)SetMicVolume:(int) volume;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]SetMicVolume:100];
    

    获取语音消息录制音量

    此接口用于获取离线语音录制音量。返回值为 int 类型,值域为0 - 200。

    说明:

    此接口不同于实时语音接口,此接口在 ITMGPTT 下。

    函数原型

    -(int)GetMicVolume;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]GetMicVolume];
    

    获取语音消息扬声器实时音量

    此接口用于获取扬声器实时音量。返回值为 int 类型,值域为0 - 200。

    说明:

    此接口不同于实时语音接口,此接口在 ITMGPTT 下。

    函数原型

    -(QAVResult)GetSpeakerLevel;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]GetSpeakerLevel];
    

    设置语音消息播放音量

    此接口用于设置语音消息播放音量,值域为0 - 200。

    说明:

    此接口不同于实时语音接口,此接口在 ITMGPTT 下。

    函数原型

    -(QAVResult)SetSpeakerVolume:(int)volume;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]SetSpeakerVolume:100];
    

    获取语音消息播放音量

    此接口用于获取语音消息播放音量。返回值为 int 类型,值域为0 - 200。

    说明:

    此接口不同于实时语音接口,此接口在 ITMGPTT 下。

    函数原型

    -(int)GetSpeakerVolume;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]GetSpeakerVolume];
    

    语音消息播放

    播放语音

    此接口用于播放语音。

    函数原型

    -(int)PlayRecordedFile:(NSString*)downloadFilePath;
    -(int)PlayRecordedFile:(NSString*)filePath VoiceType:(ITMG_VOICE_TYPE) type;
    
    参数 类型 含义
    downloadFilePath NSString 本地语音文件的路径
    type ITMG_VOICE_TYPE 变声类型,请参见 变声特效

    错误码

    错误码值 原因 建议方案
    20485 播放未开始 确保文件存在,文件路径的合法性

    示例代码

    [[[ITMGContext GetInstance]GetPTT]PlayRecordedFile:path];
    

    播放语音的回调

    播放语音的回调,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。
    传递的参数包含两个信息,result 和 file_path。

    错误码

    错误码值 原因 建议方案
    20481 初始化错误 检查设备是否被占用,或者权限是否正常,是否初始化正常
    20482 正在播放中,试图打断并播放下一个失败了(正常是可以打断的) 检查代码逻辑是否正确
    20483 参数为空 检查代码中接口参数是否正确
    20484 内部错误 初始化播放器错误,解码失败等问题产生此错误码,需要结合日志定位问题

    示例代码

    -(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
      NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
      switch (eventType) {
          case ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE:
          {
       //播放语音的回调 
          }
              break;
      }
    }
    

    停止播放语音

    此接口用于停止播放语音。停止播放语音也会有播放完成的回调。

    函数原型

    -(int)StopPlayFile;
    

    示例代码

    [[[ITMGContext GetInstance]GetPTT]StopPlayFile];
    

    获取语音文件的大小

    通过此接口,获取语音文件的大小。

    函数原型

    -(int)GetFileSize:(NSString*)filePath;
    
    参数 类型 含义
    filePath NSString 语音文件的路径,此路径为本地路径

    示例代码

    [[[ITMGContext GetInstance]GetPTT]GetFileSize:path];
    

    获取语音文件的时长

    此接口用于获取语音文件的时长,单位毫秒。

    函数原型

    -(int)GetVoiceFileDuration:(NSString*)filePath;
    
    参数 类型 含义
    filePath NSString 语音文件的路径,此路径为本地路径

    示例代码

    [[[ITMGContext GetInstance]GetPTT]GetVoiceFileDuration:path];
    

    语音消息上传及下载

    上传语音文件

    此接口用于上传语音文件。

    函数原型

    -(void)UploadRecordedFile:(NSString*)filePath;
    
    参数 类型 含义
    filePath NSString 上传的语音路径,此路径为本地路径

    示例代码

    [[[ITMGContext GetInstance]GetPTT]UploadRecordedFile:path];
    

    上传语音完成的回调

    上传语音完成后,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。
    传递的参数包含三个信息,result,file_path 和 file_id。

    错误码

    错误码值 原因 建议方案
    8193 上传文件时,文件访问错误 确保文件存在,文件路径的合法性
    8194 签名校验失败错误 检查鉴权密钥是否正确,检查是否有初始化离线语音
    8195 网络错误 检查设备网络是否可以正常访问外网环境
    8196 获取上传参数过程中网络失败 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境
    8197 获取上传参数过程中回包数据为空 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境
    8198 获取上传参数过程中回包解包失败 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境
    8200 没有设置 appinfo 检查 apply 接口是否有调用,或者入参是否为空

    示例代码

    -(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
      NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
      switch (eventType) {
          case ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE:
          {
              if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
              {
                  _donwloadUrlField.text = [data objectForKey:@"file_id"] ;
                  donwLoadUrlPath = [data objectForKey:@"file_id"] ;
              }
          }
              break;
      }
    }
    

    下载语音文件

    此接口用于下载语音文件。

    函数原型

    -(void)DownloadRecordedFile:(NSString*)fileId downloadFilePath:(NSString*)downloadFilePath 
    
    参数 类型 含义
    fileID NSString 文件的 url 路径
    downloadFilePath NSString 文件的本地保存路径

    示例代码

    [[[ITMGContext GetInstance]GetPTT]DownloadRecordedFile:fileIdpath downloadFilePath:path];
    

    下载语音文件完成回调

    下载语音完成后,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。
    传递的参数包含三个信息,result、file_path 和 file_id。

    错误码

    错误码值 原因 建议方案
    12289 下载文件时,文件访问错误 检查文件路径是否合法
    12290 签名校验失败 检查鉴权密钥是否正确,检查是否有初始化离线语音
    12291 网络存储系统异常 服务器获取语音文件失败,检查接口参数 fileid 是否正确,检查网络是否正常,检查 cos 文件存不存在
    12292 服务器文件系统错误 检查设备网络是否可以正常访问外网环境,检查服务器上是否有此文件
    12293 获取下载参数过程中,HTTP 网络失败 检查设备网络是否可以正常访问外网环境
    12294 获取下载参数过程中,回包数据为空 检查设备网络是否可以正常访问外网环境
    12295 获取下载参数过程中,回包解包失败 检查设备网络是否可以正常访问外网环境
    12297 没有设置 appinfo 检查鉴权密钥是否正确,检查是否有初始化离线语音

    示例代码

    -(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
      NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
      switch (eventType) {
          case ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE:
          {
              if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
              {
                  _audiofileToPlayField.text = [data objectForKey:@"file_path"] ;
                  donwLoadLocalPath = [data objectForKey:@"file_path"];
              }
              else
              {
                  donwLoadLocalPath = NULL;
              } 
          }
              break;
      }
    }
    

    语音转文字服务

    将指定的语音文件识别成文字

    此接口用于将指定的语音文件识别成文字。

    函数原型

    -(void)SpeechToText:(NSString*)fileID;
    
    参数 类型 含义
    fileID NSString 语音文件 url

    示例代码

    [[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID];
    

    将指定的语音文件翻译成文字(指定语言)

    此接口可以指定语言进行识别,也可以将语音中识别到的信息翻译成指定的语言返回。

    函数原型

    -(void)SpeechToText:(NSString*)fileID (NSString*)speechLanguage (NSString*)translateLanguage;
    
    参数 类型 含义
    fileID NSString* 语音文件 url,录音在服务器存放 90 天
    speechLanguage NSString* 识别出指定文字的语言参数,参数请参见 语音转文字的语言参数参考列表
    translateLanguage NSString* 翻译成指定文字的语言参数,参数请参见 语音转文字的语言参数参考列表(此参数暂时无效,填入参数应与 speechLanguage 一致)

    示例代码

    [[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID speechLanguage:"cmn-Hans-CN" translateLanguage:"cmn-Hans-CN"];
    

    识别回调

    将指定的语音文件识别成文字的回调,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。
    传递的参数包含三个信息,result、file_path 和 text,其中 text 为识别的文本。

    错误码

    错误码值 原因 建议方案
    32769 内部错误 分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决
    32770 网络失败 检查设备网络是否可以正常访问外网环境
    32772 回包解包失败 分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决
    32774 没有设置 appinfo 检查鉴权密钥是否正确,检查是否有初始化离线语音
    32776 authbuffer 校验失败 检查 authbuffer 是否正确
    32784 语音转文本参数错误 检查代码中接口参数 fileid 是否为空
    32785 语音转文本翻译返回错误 离线语音后台错误,请分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决

    示例代码

    -(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
      NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
      switch (eventType) {
          case ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE:
          {
              if (data != NULL &&[[data objectForKey:@"result"] intValue]== 0)
              {
                  UITextField *_audiotoTextField =(UITextField*)objc_getAssociatedObject(self, [PTT_AUDIO_TO_TEXT UTF8String]);
                  _audiotoTextField.text = [data objectForKey:@"text"] ;
              }
          }
              break;   
      }
    }
    

    高级 API

    获取版本号

    获取 SDK 版本号,用于分析。

    函数原型

    -(NSString*)GetSDKVersion;
    

    示例代码

    [[ITMGContext GetInstance] GetSDKVersion];
    

    检查麦克风权限

    返回麦克风权限状态。

    函数原型

    -(ITMG_RECORD_PERMISSION)CheckMicPermission;
    

    参数含义

    参数 数值 含义
    ITMG_PERMISSION_GRANTED 0 麦克风已授权
    ITMG_PERMISSION_Denied 1 麦克风被禁用
    ITMG_PERMISSION_NotDetermined 2 尚未弹出权限框向用户申请权限
    ITMG_PERMISSION_ERROR 3 接口调用错误

    示例代码

    [[ITMGContext GetInstance] CheckMicPermission];
    

    设置打印日志等级

    用于设置打印日志等级。建议保持默认等级。需要在 Init 之前调用。

    函数原型

    -(void)SetLogLevel:(ITMG_LOG_LEVEL)levelWrite (ITMG_LOG_LEVEL)levelPrint;
    

    参数含义

    参数 类型 含义
    levelWrite ITMG_LOG_LEVEL 设置写入日志的等级,TMG_LOG_LEVEL_NONE 表示不写入,默认为 TMG_LOG_LEVEL_INFO
    levelPrint ITMG_LOG_LEVEL 设置打印日志的等级,TMG_LOG_LEVEL_NONE 表示不打印,默认为 TMG_LOG_LEVEL_ERROR
    ITMG_LOG_LEVEL 含义
    TMG_LOG_LEVEL_NONE 不打印日志
    TMG_LOG_LEVEL_ERROR 打印错误日志(默认)
    TMG_LOG_LEVEL_INFO 打印提示日志
    TMG_LOG_LEVEL_DEBUG 打印开发调试日志
    TMG_LOG_LEVEL_VERBOSE 打印高频日志

    示例代码

    [[ITMGContext GetInstance] SetLogLevel:TMG_LOG_LEVEL_INFO TMG_LOG_LEVEL_INFO];
    

    设置打印日志路径

    用于设置打印日志路径。默认路径为: Application/********-****-****-************/Documents。需要在 Init 之前调用。

    函数原型

    -(void)SetLogPath:(NSString*)logDir;
    
    参数 类型 含义
    logDir NSString 路径

    示例代码

    [[ITMGContext GetInstance] SetLogPath:Path];
    

    获取诊断信息

    获取音视频通话的实时通话质量的相关信息。该接口主要用来查看实时通话质量、排查问题等,业务侧可以忽略。

    函数原型

    -(NSString*)GetQualityTips;
    

    示例代码

    [[[ITMGContext GetInstance]GetRoom ] GetQualityTips];
    

    回调消息

    消息列表

    消息 消息代表的含义
    ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE PTT 录音完成
    ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE 上传 PTT 完成
    ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE 下载 PTT 完成
    ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE 播放 PTT 完成
    ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE 语音转文字完成

    Data 列表

    消息 Data 例子
    ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE result; file_path {"file_path":"","result":0}
    ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE result; file_path;file_id {"file_id":"","file_path":"","result":0}
    ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE result; file_path;file_id {"file_id":"","file_path":"","result":0}
    ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE result; file_path {"file_path":"","result":0}
    ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE result; text;file_id {"file_id":"","text":"","result":0}
    ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE result; file_path; text;file_id {"file_id":"","file_path":","text":"","result":0}
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持