接口 | 接口含义 |
InitEngine | 初始化 GME |
Poll | 触发事件回调 |
Pause | 系统暂停 |
Resume | 系统恢复 |
Uninit | 反初始化 GME |
SetDefaultAudienceAudioCategory | 设置设备后台播放声音 |
#import "GMESDK/TMGEngine.h"#import "GMESDK/QAVAuthBuffer.h"
+ (ITMGContext*) GetInstance;
//TMGSampleViewController.mITMGContext* _context = [ITMGContext GetInstance];
@interface TMGDemoViewController ()<ITMGDelegate>{}ITMGDelegate < NSObject >//TMGSampleViewController.mITMGContext* _context = [ITMGContext GetInstance];_context.TMGDelegate = [DispatchCenter getInstance];
- (void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary*)data;
//TMGRealTimeViewController.mTMGRealTimeViewController ()< 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 eventcase 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
-(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;
参数 | 类型 | 含义 |
sdkAppId | String | |
OpenId | String | OpenId 只支持 Int64 类型(转为 string 传入)。 |
返回值 | 处理 |
QAV_OK= 0 | 初始化 SDK 成功 |
QAV_ERR_SDK_NOT_FULL_UPDATE= 7015 | 检查 SDK 文件是否完整,建议删除后重新导入 SDK |
_openId = _userIdText.text;_appId = _appIdText.text;[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];
-(void)Poll;
[[ITMGContext GetInstance] Poll];
-(QAVResult)Pause;
-(QAVResult)Resume;
-(int)Uninit;
[[ITMGContext GetInstance] Uninit];
-(QAVResult)SetDefaultAudienceAudioCategory:(ITMG_AUDIO_CATEGORY)audioCategory;
类型 | 参数代表 | 含义 |
ITMG_CATEGORY_AMBIENT | 0 | 退后台没有声音(默认) |
ITMG_CATEGORY_PLAYBACK | 1 | 退后台有声音 |
[[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 | 语音识别成文字 |
@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];
public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);
参数 | 类型 | 含义 |
authBuffer | NSData* | 鉴权 |
[[[ITMGContext GetInstance]GetPTT]ApplyPTTAuthbuffer:(NSData *)authBuffer];
-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath;-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath language:(NSString*)speechLanguage translatelanguage:(NSString*)translateLanguage;
参数 | 类型 | 含义 |
filePath | String | 存放的语音路径 |
speechLanguage | String | 识别成指定文字的语言参数,参数请参见 语音转文字的语言参数参考列表 |
translateLanguage | String |
recordfilePath = [docDir stringByAppendingFormat:@"/test_%d.ptt",index++];[[[ITMGContext GetInstance] GetPTT] StartRecordingWithStreamingRecognition:recordfilePath language:@"cmn-Hans-CN"];
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
是在停止录制并完成识别后才返回文字,相当于一段话说完才会返回识别的文字。ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
是在录音过程中就会实时返回识别到的文字,相当于边说话边返回识别到的文字。消息名称 | 含义 |
result | 用于判断流式语音识别是否成功的返回码 |
text | 语音转文字识别的文本 |
file_path | 录音存放的本地地址 |
file_id | 录音在后台的 url 地址,录音在服务器存放 90 天。fileid 固定字段为 http://gme-v2- |
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;}}
-(QAVResult)SetMaxMessageLength:(int)msTime
参数 | 类型 | 含义 |
msTime | int | 语音时长,单位 ms,区间为 1000 < msTime < 58000 |
[[[ITMGContext GetInstance]GetPTT]SetMaxMessageLength:(int)msTime];
-(int)StartRecording:(NSString*)filePath;
参数 | 类型 | 含义 |
filePath | NSString | 存放的语音路径 |
recordfilePath =[docDir stringByAppendingFormat:@"/test_%d.ptt",index++];[[[ITMGContext GetInstance]GetPTT]StartRecording:recordfilePath];
-(QAVResult)StopRecording;
[[[ITMGContext GetInstance]GetPTT]StopRecording];
错误码值 | 原因 | 建议方案 |
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;}}
-(int)PauseRecording;
[[[ITMGContext GetInstance]GetPTT]PauseRecording];
-(int)ResumeRecording;
[[[ITMGContext GetInstance]GetPTT]ResumeRecording];
-(QAVResult)CancelRecording;
[[[ITMGContext GetInstance]GetPTT]CancelRecording];
-(QAVResult)GetMicLevel;
[[[ITMGContext GetInstance]GetPTT]GetMicLevel];
-(QAVResult)SetMicVolume:(int) volume;
[[[ITMGContext GetInstance]GetPTT]SetMicVolume:100];
-(int)GetMicVolume;
[[[ITMGContext GetInstance]GetPTT]GetMicVolume];
-(QAVResult)GetSpeakerLevel;
[[[ITMGContext GetInstance]GetPTT]GetSpeakerLevel];
-(QAVResult)SetSpeakerVolume:(int)volume;
[[[ITMGContext GetInstance]GetPTT]SetSpeakerVolume:100];
-(int)GetSpeakerVolume;
[[[ITMGContext GetInstance]GetPTT]GetSpeakerVolume];
-(int)PlayRecordedFile:(NSString*)filePath;-(int)PlayRecordedFile:(NSString*)filePath VoiceType:(ITMG_VOICE_TYPE) type;
参数 | 类型 | 含义 |
downloadFilePath | NSString | 本地语音文件的路径 |
type | ITMG_VOICE_TYPE | 变声类型,请参见 变声接入文档 |
错误码值 | 原因 | 建议方案 |
20485 | 播放未开始 | 确保文件存在,文件路径的合法性 |
[[[ITMGContext GetInstance]GetPTT]PlayRecordedFile: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];
错误码值 | 原因 | 建议方案 |
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];
错误码值 | 原因 | 建议方案 |
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* |
[[[ITMGContext GetInstance]GetPTT]SpeechToText:fileID speechLanguage:"cmn-Hans-CN" translateLanguage:"cmn-Hans-CN"];
错误码值 | 原因 | 建议方案 |
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;}}
-(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];
-(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];
消息 | 消息代表的含义 |
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 | 例子 |
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} |
本页内容是否解决了您的问题?