类 | 含义 |
ITMGContext | 核心接口 |
ITMGPTT | 语音消息及转文字相关接口 |
接口 | 接口含义 |
Init | 初始化 GME |
Poll | 触发事件回调 |
Pause | 系统暂停 |
Resume | 系统恢复 |
Uninit | 反初始化 GME |
import com.tencent.TMG.ITMGContext;ITMGContext.getInstance(this);
static public abstract class ITMGDelegate {public void OnEvent(ITMG_MAIN_EVENT_TYPE type, Intent data){}}
参数 | 类型 | 含义 |
type | ITMGContext.ITMG_MAIN_EVENT_TYPE | 回调的事件类型 |
data | Intent 消息类型 | 回调的相关信息,事件数据 |
private ITMGContext.ITMGDelegate itmgDelegate = null;itmgDelegate = new ITMGContext.ITMGDelegate() {@Overridepublic void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type){//对事件返回的 Data 进行解析int nErrCode = data.getIntExtra("result" , -1);String strErrMsg = data.getStringExtra("error_info");}}}
public abstract int SetTMGDelegate(ITMGDelegate delegate);
参数 | 类型 | 含义 |
delegate | ITMGDelegate | SDK 回调函数 |
ITMGContext.GetInstance(this).SetTMGDelegate(itmgDelegate);
public abstract int Init(String sdkAppId, String openId);
参数 | 类型 | 含义 |
sdkAppId | String | |
openId | String | OpenId 只支持 Int64 类型(转为 string 传入)。 |
返回值 | 处理 |
QAVError.OK= 0 | 初始化 SDK 成功 |
AV_ERR_SDK_NOT_FULL_UPDATE=7015 | 检查 SDK 文件是否完整,建议删除后重新导入 SDK |
String sdkAppID = "14000*****";String openID = "100";int ret = ITMGContext.GetInstance(this).Init(sdkAppId, openId);if(ret != 0){Log.e(TAG,"初始化 SDK 失败");}
public abstract int Poll();
private Handler mhandler = new Handler();private Runnable mRunnable = new Runnable() {@Overridepublic void run() {if (s_pollEnabled) {if (ITMGContext.GetInstance(null) != null)ITMGContext.GetInstance(null).Poll();}mhandler.postDelayed(mRunnable, 33);}};
public abstract int Pause();
public abstract int Resume();
public abstract int Uninit();
接口 | 接口含义 |
ApplyPTTAuthbuffer | 鉴权初始化 |
SetMaxMessageLength | 限制最大语音信息时长 |
StartRecording | 启动录音 |
StartRecordingWithStreamingRecognition | 启动流式录音 |
PauseRecording | 暂停录音 |
ResumeRecording | 恢复录音 |
StopRecording | 停止录音 |
CancelRecording | 取消录音 |
GetMicLevel | 获取实时麦克风音量 |
SetMicVolume | 设置录制音量 |
GetMicVolume | 获取录制音量 |
GetSpeakerLevel | 获取实时扬声器音量 |
SetSpeakerVolume | 设置播放音量 |
GetSpeakerVolume | 获取播放音量 |
UploadRecordedFile | 上传语音文件 |
DownloadRecordedFile | 下载语音文件 |
PlayRecordedFile | 播放语音 |
StopPlayFile | 停止播放语音 |
GetFileSize | 语音文件的大小 |
GetVoiceFileDuration | 语音文件的时长 |
SpeechToText | 语音识别成文字 |
AuthBuffer public native byte[] genAuthBuffer(int sdkAppId, String roomId, String openId, String key)
参数 | 类型 | 含义 |
appId | int | 来自腾讯云控制台的 AppId 号码 |
roomId | string | 房间号参数必须填 null |
openId | string | 用户标识。与 Init 时候的 openId 相同 |
key | string |
import com.tencent.av.sig.AuthBuffer;//头文件byte[] authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(sdkAppId), "0",openId, key);
public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);
参数 | 类型 | 含义 |
authBuffer | String | 鉴权 |
byte[] authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(sdkAppId), "0", openId, key);ITMGContext.GetInstance(this).GetPTT().ApplyPTTAuthbuffer(authBuffer);
public abstract int StartRecordingWithStreamingRecognition (String filePath);public abstract int StartRecordingWithStreamingRecognition (String filePath,String language,String translatelanguage);public abstract int StopRecording();
参数 | 类型 | 含义 |
filePath | String | 存放的语音路径 |
speechLanguage | String | 识别成指定文字的语言参数,参数请参见 语音转文字的语言参数参考列表 |
translateLanguage | String |
String temple = getActivity().getExternalFilesDir(null).getAbsolutePath() + "/test_"+(index++)+".ptt";ITMGContext.GetInstance(getActivity()).GetPTT().StartRecordingWithStreamingRecognition(temple,"cmn-Hans-CN","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 | 流式语音转文本失败 | 在流式录制状态当中,请等待流式录制接口执行结果返回 |
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE == type){/流式离线语音回调。Handler mainHander = new Handler(Looper.getMainLooper());mainHander.post(new Runnable() {@Overridepublic void run() {if (nErrCode ==0) {String textString = templeData.getStringExtra("text");EditText _editText = (EditText) root.findViewById(R.id.edit_audio_to_text);_editText.setText(textString);recordfilePath = templeData.getStringExtra("file_path");mEditTextfiletoupload.setText(recordfilePath);donwLoadUrlPath = templeData.getStringExtra("file_id");mEditTextDownloadurl.setText(donwLoadUrlPath);Log.e(TARGET, "STREAMINGRECOGNITION" + "nErrCode=" + nErrCode + ", content=" + textString+"recordfilePath"+recordfilePath+"donwLoadUrlPath"+donwLoadUrlPath);}else{Toast.makeText(getActivity(), String.format("流式语音转文本失败,错误代码:%d",nErrCode), Toast.LENGTH_SHORT).show();Log.e(TARGET, "流式语音转文本失败,错误代码"+nErrCode);}}});}}
public abstract int SetMaxMessageLength(int msTime);
参数 | 类型 | 含义 |
msTime | int | 语音时长,单位 ms,区间为 1000 < msTime < 58000 |
ITMGContext.GetInstance(this).GetPTT().SetMaxMessageLength(msTime);
public abstract int StartRecording(String filePath);
参数 | 类型 | 含义 |
filePath | String | 存放的语音路径 |
ITMGContext.GetInstance(this).GetPTT().StartRecording(filePath);
public abstract int StopRecording();
ITMGContext.GetInstance(this).GetPTT().StopRecording();
错误码值 | 原因 | 建议方案 |
4097 | 参数为空 | 检查代码中接口参数是否正确 |
4098 | 初始化错误 | 检查设备是否被占用,或者权限是否正常,是否初始化正常 |
4099 | 正在录制中 | 确保在正确的时机使用 SDK 录制功能 |
4100 | 没有采集到音频数据 | 检查麦克风设备是否正常 |
4101 | 录音时,录制文件访问错误 | 确保文件存在,文件路径的合法性 |
4102 | 麦克风未授权错误 | 使用 SDK 需要麦克风权限,添加权限请参考对应引擎或平台的 SDK 工程配置文档 |
4103 | 录音时间太短错误 | 首先,限制录音时长的单位为毫秒,检查参数是否正确;其次,录音时长要1000毫秒以上才能成功录制 |
4104 | 没有启动录音操作 | 检查是否已经调用启动录音接口 |
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE == type){//启动录音的回调if (nErrCode ==0){recordfilePath = templeData.getStringExtra("file_path");mEditTextfiletoupload.setText(recordfilePath);}}}
public abstract int PauseRecording();
ITMGContext.GetInstance(this).GetPTT().PauseRecording();
public abstract int ResumeRecording();
ITMGContext.GetInstance(this).GetPTT().ResumeRecording();
public abstract int CancelRecording();
ITMGContext.GetInstance(this).GetPTT().CancelRecording();
public abstract int GetMicLevel();
ITMGContext.GetInstance(this).GetPTT().GetMicLevel();
public abstract int SetMicVolume(int volume);
ITMGContext.GetInstance(this).GetPTT().SetMicVolume(100);
public abstract int GetMicVolume();
ITMGContext.GetInstance(this).GetPTT().GetMicVolume();
public abstract int GetSpeakerLevel();
ITMGContext.GetInstance(this).GetPTT().GetSpeakerLevel();
public abstract int SetSpeakerVolume(int volume);
ITMGContext.GetInstance(this).GetPTT().SetSpeakerVolume(100);
public abstract int GetSpeakerVolume();
ITMGContext.GetInstance(this).GetPTT().GetSpeakerVolume();
public abstract int PlayRecordedFile(String filePath);public abstract int PlayRecordedFile(String filePath,int voicetype);
参数 | 类型 | 含义 |
downloadFilePath | String | 本地语音文件的路径 |
voicetype | int |
错误码值 | 原因 | 建议方案 |
20485 | 播放未开始 | 确保文件存在,文件路径的合法性 |
ITMGContext.GetInstance(this).GetPTT().PlayRecordedFile(downloadFilePath);
错误码值 | 原因 | 建议方案 |
20481 | 初始化错误 | 检查设备是否被占用,或者权限是否正常,是否初始化正常 |
20482 | 正在播放中,试图打断并播放下一个失败了(正常是可以打断的) | 检查代码逻辑是否正确 |
20483 | 参数为空 | 检查代码中接口参数是否正确 |
20484 | 内部错误 | 初始化播放器错误,解码失败等问题产生此错误码,需要结合日志定位问题 |
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE== type){//播放语音的回调}}
public abstract int StopPlayFile();
ITMGContext.GetInstance(this).GetPTT().StopPlayFile();
public abstract int GetFileSize(String filePath);
参数 | 类型 | 含义 |
filePath | String | 语音文件的路径,此路径为本地路径 |
ITMGContext.GetInstance(this).GetPTT().GetFileSize(path);
public abstract int GetVoiceFileDuration(String filePath);
参数 | 类型 | 含义 |
filePath | String | 语音文件的路径,此路径为本地路径 |
ITMGContext.GetInstance(this).GetPTT().GetVoiceFileDuration(path);
public abstract int UploadRecordedFile(String filePath);
参数 | 类型 | 含义 |
filePath | String | 上传的语音路径,此路径为本地路径 |
ITMGContext.GetInstance(this).GetPTT().UploadRecordedFile(filePath);
错误码值 | 原因 | 建议方案 |
8193 | 上传文件时,文件访问错误 | 确保文件存在,文件路径的合法性 |
8194 | 签名校验失败错误 | 检查鉴权密钥是否正确,检查是否有初始化离线语音 |
8195 | 网络错误 | 检查设备网络是否可以正常访问外网环境 |
8196 | 获取上传参数过程中网络失败 | 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境 |
8197 | 获取上传参数过程中回包数据为空 | 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境 |
8198 | 获取上传参数过程中回包解包失败 | 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境 |
8200 | 没有设置 appinfo | 检查 apply 接口是否有调用,或者入参是否为空 |
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {if(ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE== type){//上传语音完成的回调}}
public abstract int DownloadRecordedFile(String fileID, String filePath);
参数 | 类型 | 含义 |
fileID | String | 文件的 url 路径 |
downloadFilePath | String | 文件的本地保存路径 |
ITMGContext.GetInstance(this).GetPTT().DownloadRecordedFile(url,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 | 检查鉴权密钥是否正确,检查是否有初始化离线语音 |
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE== type){//下载成功}}
public abstract int SpeechToText(String fileID);
参数 | 类型 | 含义 |
fileID | String | 语音文件 url |
ITMGContext.GetInstance(this).GetPTT().SpeechToText(fileID);
public abstract int SpeechToText(String fileID, String speechLanguage,String translatelanguage);
参数 | 类型 | 含义 |
fileID | String | 语音文件 url,录音在服务器存放90天 |
speechLanguage | String | 识别出指定文字的语言参数,参数参见 语音转文字的语言参数参考列表 |
translatelanguage | String |
ITMGContext.GetInstance(this).GetPTT().SpeechToText(fileID,"cmn-Hans-CN","cmn-Hans-CN");
错误码值 | 原因 | 建议方案 |
32769 | 内部错误 | 分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决。 |
32770 | 网络失败 | 检查设备网络是否可以正常访问外网环境 |
32772 | 回包解包失败 | 分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决。 |
32774 | 没有设置 appinfo | 检查鉴权密钥是否正确,检查是否有初始化离线语音 |
32776 | authbuffer 校验失败 | 检查 authbuffer 是否正确 |
32784 | 语音转文本参数错误 | 检查代码中接口参数 fileid 是否为空 |
32785 | 语音转文本翻译返回错误 | 离线语音后台错误,请分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决 |
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {if(ITMGContext.ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE == type){//成功识别语音文件}}
public abstract String GetSDKVersion();
ITMGContext.GetInstance(this).GetSDKVersion();
public abstract ITMG_RECORD_PERMISSION CheckMicPermission();
参数 | 数值 | 含义 |
ITMG_PERMISSION_GRANTED | 0 | 麦克风已授权 |
ITMG_PERMISSION_Denied | 1 | 麦克风被禁用 |
ITMG_PERMISSION_NotDetermined | 2 | 尚未弹出权限框向用户申请权限 |
ITMG_PERMISSION_ERROR | 3 | 接口调用错误 |
ITMGContext.GetInstance(this).CheckMicPermission();
public abstract int SetLogLevel(int levelWrite, int 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(this).SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);
public abstract int SetLogPath(String logDir);
参数 | 类型 | 含义 |
logDir | String | 路径 |
ITMGContext.GetInstance(this).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} |
本页内容是否解决了您的问题?