tencent cloud

文档反馈

语音消息及转文本

最后更新时间:2024-01-18 15:02:24
    为方便 Unreal Engine 开发者调试和接入腾讯云游戏多媒体引擎客户端 API,本文为您介绍适用于 Unreal Engine 语音消息服务及转文本服务的接入技术。

    使用 GME 重要事项

    GME 提供实时语音服务、语音消息服务及转文本服务,使用 GME 服务都依赖 Init 和 Poll 等核心接口。

    重点提示

    已完成 GME 应用创建,并获取 SDK AppID 和 Key。请参见 服务开通指引
    已开通 GME 实时语音服务、语音消息服务以及转文本服务。请参见 服务开通指引
    GME 使用前请对工程进行配置,否则 SDK 不生效。
    GME 的接口调用成功后返回值为 QAVError.OK,数值为 0。
    GME 的接口调用要在同一个线程下。
    GME 需要周期性的调用 Poll 接口触发事件回调。
    错误码详情可参考 错误码ErrorCode
    注意:
    语音转文本相关接口有默认频率限制,限额范围内计费方式请参见 计费文档;若需提升接口频率限额或了解超额计费方式,请联系商务或 提交工单咨询
    语音消息非流式转文本接口 SpeechToText() :默认单账号限制并发数为10路
    语音消息流式转文本接口 StartRecordingWithStreamingRecognition():默认单账号限制并发数为50路
    实时语音流式转文本接口 StartRealTimeASR():默认单账号限制并发数为50路

    接入 SDK

    重要步骤

    接入 SDK 重要流程如下:
    
    
    

    C++ 类

    含义
    ITMGContext
    核心接口
    ITMGPTT
    语音消息及转文本相关接口

    核心接口

    接口
    接口含义
    Init
    初始化 GME
    Poll
    触发事件回调
    Pause
    系统暂停
    Resume
    系统恢复
    Uninit
    反初始化 GME

    准备工作

    接入 GME 首先需要引入头文件 tmg_sdk.h,头文件类继承 ITMGDelegate 以进行消息的传递及回调。

    示例代码

    #include "tmg_sdk.h"
    
    class UEDEMO1_API AUEDemoLevelScriptActor : public ALevelScriptActor, public ITMGDelegate
    {
    public:
    ...
    private:
    ...

    设置单例

    在 EnterRoom 函数调用之前要先获取 ITMGContext ,所有调用都从 ITMGContext 开始,由 ITMGDelegate 回调回传给应用,必须首先设置。

    示例代码

    ITMGContext* context = ITMGContextGetInstance();
    context->SetTMGDelegate(this);

    消息传递

    接口类采用 Delegate 方法用于向应用程序发送回调通知,消息类型参考 ITMG_MAIN_EVENT_TYPE,data 在 Windows 平台下是 json 字符串格式, 具体 key-value 参见说明文档。

    示例代码

    //函数实现:
    //UEDemoLevelScriptActor.h:
    class UEDEMO1_API AUEDemoLevelScriptActor : public ALevelScriptActor, public SetTMGDelegate
    {
    public:
    void OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data);
    
    //UEDemoLevelScriptActor.cpp:
    void AUEDemoLevelScriptActor::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data){
    //在此对eventType进行判断及操作
    }

    初始化 SDK

    未初始化前,SDK 处于未初始化阶段,需要通过接口 Init 初始化 SDK,才可以使用实时语音服务、语音消息服务及转文本服务。调用 Init 接口的线程必须于其他接口在同一线程,建议都在主线程调用接口。

    接口原型

    ITMGContext virtual int Init(const char* sdkAppId, const char* openId)
    参数
    类型
    含义
    sdkAppId
    const char*
    来自 腾讯云控制台 的 GME 服务提供的 AppID,获取请参见 语音服务开通指引
    openID
    const char*
    openID 只支持 Int64 类型(转为 const char* 传入)。 规则由 App 开发者自行制定,App 内不重复即可。如需使用字符串作为 Openid 传入,可 提交工单 联系开发者

    返回值

    返回值
    处理
    AV_OK = 0
    初始化 SDK 成功
    AV_ERR_SDK_NOT_FULL_UPDATE=7015
    检查 SDK 文件是否完整,建议删除后重新导入 SDK
    关于7015错误提示:
    7015错误码是通过 md5 进行判断,在接入过程中若出现此错误,请根据提示检查 SDK 文件是否完整、SDK 文件版本是否一致。
    出现返回值 AV_ERR_SDK_NOT_FULL_UPDATE 时,此返回值只有提示作用,并不会造成初始化失败。
    由于第三方加固、Unity 打包机制等因素会影响库文件 md5,造成误判,所以正式发布请在逻辑中忽略此错误,并尽量不在 UI 中提示。

    示例代码

    std::string appid = TCHAR_TO_UTF8(CurrentWidget->editAppID->GetText().ToString().operator*());
    std::string userId = TCHAR_TO_UTF8(CurrentWidget->editUserID->GetText().ToString().operator*());
    ITMGContextGetInstance()->Init(appid.c_str(), userId.c_str());

    触发事件回调

    通过在 update 里面周期的调用 Poll 可以触发事件回调。Poll 是 GME 的消息泵,GME 需要周期性的调用 Poll 接口触发事件回调。如果没有调用 Poll ,将会导致整个 SDK 服务运行异常。详情请参见 Sample Project 中的 EnginePollHelper 文件。
    注意:
    务必周期性调用 Poll 接口且在主线程调用,以免接口回调异常。

    接口原型

    class ITMGContext {
    protected:
    virtual ~ITMGContext() {}
    
    public:
    virtual void Poll()= 0;
    }

    示例代码

    //头文件中的声明
    virtual void Tick(float DeltaSeconds);
    
    void AUEDemoLevelScriptActor::Tick(float DeltaSeconds) {
    Super::Tick(DeltaSeconds);
    ITMGContextGetInstance()->Poll();
    }

    系统暂停

    当系统发生 Pause 事件时,需要同时通知引擎进行 Pause。如果不需要后台播放房间内声音,请调用 Pause 接口暂停整个 GME 服务。

    接口原型

    ITMGContext int Pause()

    系统恢复

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

    接口原型

    ITMGContext int Resume()

    反初始化 SDK

    反初始化 SDK,进入未初始化状态。如果游戏业务侧账号与 openid 是绑定的,那切换游戏账号需要反初始化 GME,再用新的 openid 初始化

    接口原型

    ITMGContext int Uninit()

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

    说明:
    转文本服务分录音文件极速转文本以及语音消息流式转文本。
    使用语音消息服务不需要进入实时语音房间。
    语音消息最大录制时长默认为58秒,最短不能小于1秒。如果需要再加以限制,例如限制为最大录制时长为10秒,请在初始化之后调用 SetMaxMessageLength 接口进行设置。
    
    
    

    转文本服务使用流程

    
    
    
    接口
    接口含义
    GenAuthBuffer
    生成本地鉴权
    ApplyPTTAuthbuffer
    鉴权初始化
    SetMaxMessageLength
    限制最大语音信息时长

    生成本地鉴权

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

    接口原型

    int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,
    const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
    参数
    类型
    含义
    dwSdkAppID
    int
    来自腾讯云控制台的 AppId 号码
    strRoomID
    const char*
    填 null 或者空字符串
    strOpenID
    const char*
    用户标识。与 Init 时候的 openID相同
    strKey
    const char*
    来自腾讯云 控制台 的权限密钥
    strAuthBuffer
    const char*
    返回的 authbuff
    bufferLength
    int
    传入的 authbuff 长度,建议为 500

    应用鉴权

    生成鉴权信息后,将鉴权赋值到 SDK 中。

    接口原型

    ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)
    参数
    类型
    含义
    authBuffer
    const char*
    鉴权
    authBufferLen
    int
    鉴权长度

    示例代码

    ITMGContextGetInstance()->GetPTT()->ApplyPTTAuthbuffer(authBuffer,authBufferLen);

    限制最大语音信息时长

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

    接口原型

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

    示例代码

    int msTime = 10000;
    ITMGContextGetInstance()->GetPTT()->SetMaxMessageLength(msTime);

    流式语音识别

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

    接口
    接口含义
    StartRecordingWithStreamingRecognition
    启动流式录音
    StopRecording
    停止录音

    启动流式语音识别

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

    接口原型

    ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath)
    ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath,const char* translateLanguage,const char* translateLanguage)
    参数
    类型
    含义
    filePath
    const char*
    存放的语音路径
    speechLanguage
    const char*
    识别成指定文字的语言参数,参数请参见 语言参数参考列表
    translateLanguage
    const char*
    翻译成指定文字的语言参数,参数请参见 语言参数参考列表

    示例代码

    ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,"cmn-Hans-CN","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
    流式语音转文本失败
    在流式录制状态当中,请等待流式录制接口执行结果返回
    32787
    转文本成功,文本翻译服务未开通
    需要在控制台开通文本翻译服务
    32788
    转文本成功,文本翻译语言参数不支持
    重新检查传入参数
    如果出现 4098 错误码,请参见 常见问题文档 进行解决。

    示例代码

    void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
    switch (eventType) {
    case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE:
    {
    HandleSTREAM2TEXTComplete(data,true);
    break;
    }
    ...
    case ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING:
    {
    HandleSTREAM2TEXTComplete(data, false);
    break;
    }
    }
    }
    
    void CTMGSDK_For_AudioDlg::HandleSTREAM2TEXTComplete(const char* data, bool isComplete)
    {
    std::string strText = "STREAM2TEXT: ret=";
    strText += data;
    m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());
    Json::Reader reader;
    Json::Value root;
    bool parseRet = reader.parse(data, root);
    if (!parseRet) {
    ::SetWindowText(m_EditInfo.GetSafeHwnd(),MByteToWChar(std::string("parse result Json error")).c_str());
    }
    else
    {
    if (isComplete) {
    ::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(root["file_id"].asString()).c_str());
    }
    else {
    std::string isruning = "STREAMINGRECOGNITION_IS_RUNNING";
    ::SetWindowText(m_EditUpload.GetSafeHwnd(), MByteToWChar(isruning).c_str());
    }
    }
    }

    语音消息录制

    录制的流程为:录音 > 停止录音 > 录音回调返回 > 启动下一次录音。

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

    接口
    接口含义
    StartRecording
    启动录音
    PauseRecording
    暂停录音
    ResumeRecording
    恢复录音
    StopRecording
    停止录音
    CancelRecording
    取消录音

    启动录音

    此接口用于启动录音。

    接口原型

    ITMGPTT virtual int StartRecording(const char* fileDir)
    参数
    类型
    含义
    fileDir
    const char*
    存放的语音路径

    示例代码

    char buffer[256]={0};
    snprintf(buffer, sizeof(buffer), "%sunreal_ptt_local.file", getFilePath().c_str());
    ITMGContextGetInstance()->GetPTT()->StartRecording(buffer);

    停止录音

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

    接口原型

    ITMGPTT virtual int StopRecording()

    示例代码

    ITMGContextGetInstance()->GetPTT()->StopRecording();

    启动录音的回调

    启动录音的结果会通过回调返回。
    停止录音调用StopRecording。停止录音后才有启动录音的回调。
    参数
    类型
    含义
    result
    int32
    当 code 为 0 时,录制完成
    filepath
    FString
    录制的存放地址,必须是可以访问到的路径,不可将 fileid 作为路径

    错误码

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

    示例代码

    void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
    switch (eventType) {
    ...
    else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE) {
    int32 result = JsonObject->GetIntegerField(TEXT("result"));
    FString filepath = JsonObject->GetStringField(TEXT("file_path"));
    std::string path = TCHAR_TO_UTF8(filepath.operator*());
    int duration = 0;
    int filesize = 0;
    if (result == 0) {
    duration = ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(path.c_str());
    filesize = ITMGContextGetInstance()->GetPTT()->GetFileSize(path.c_str());
    }
    onPttRecordFileCompleted(result, filepath, duration, filesize);
    }
    }
    }

    暂停录音

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

    接口原型

    ITMGPTT virtual int PauseRecording()

    示例代码

    ITMGContextGetInstance()->GetPTT()->PauseRecording();

    恢复录音

    此接口用于恢复录音。

    接口原型

    ITMGPTT virtual int ResumeRecording()

    示例代码

    ITMGContextGetInstance()->GetPTT()->ResumeRecording();

    取消录音

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

    接口原型

    ITMGPTT virtual int CancelRecording()

    示例代码

    ITMGContextGetInstance()->GetPTT()->CancelRecording();

    语音消息上传、下载及播放

    接口
    接口含义
    UploadRecordedFile
    上传语音文件
    DownloadRecordedFile
    下载语音文件
    PlayRecordedFile
    播放语音
    StopPlayFile
    停止播放语音
    GetFileSize
    语音文件的大小
    GetVoiceFileDuration
    语音文件的时长

    上传语音文件

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

    接口原型

    ITMGPTT virtual int UploadRecordedFile(const char* filePath)
    参数
    类型
    含义
    filePath
    const char*
    上传的语音路径,此路径为本地路径

    示例代码

    ITMGContextGetInstance()->GetPTT()->UploadRecordedFile(filePath);

    上传语音完成的回调

    上传语音完成后,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。 传递的参数包含三个信息,result,file_path 和 file_id。
    参数
    类型
    含义
    result
    int32
    当 code 为0时,录制完成
    filepath
    FString
    录制的存放地址
    fileid
    FString
    文件的 url 路径

    错误码

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

    示例代码

    void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
    switch (eventType) {
    ...
    else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_UPLOAD_COMPLETE) {
    int32 result = JsonObject->GetIntegerField(TEXT("result"));
    FString filepath = JsonObject->GetStringField(TEXT("file_path"));
    FString fileid = JsonObject->GetStringField(TEXT("file_id"));
    onPttUploadFileCompleted(result, filepath, fileid);
    }
    }
    }

    下载语音文件

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

    接口原型

    ITMGPTT virtual int DownloadRecordedFile(const char* fileId, const char* filePath)
    参数
    类型
    含义
    fileId
    const char*
    文件的 url 路径
    filePath
    const char*
    文件的本地保存路径

    示例代码

    ITMGContextGetInstance()->GetPTT()->DownloadRecordedFile(fileID,filePath);

    下载语音文件完成回调

    下载语音完成后,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。
    传递的参数包含三个信息,result、file_path 和 file_id。
    参数
    类型
    含义
    result
    int32
    当 code 为0时,录制完成
    filepath
    FString
    录制的存放地址
    fileid
    FString
    文件的 url 路径,录音在服务器存放 90 天

    错误码

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

    示例代码

    void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
    switch (eventType) {
    ...
    else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_DOWNLOAD_COMPLETE) {
    int32 result = JsonObject->GetIntegerField(TEXT("result"));
    FString filepath = JsonObject->GetStringField(TEXT("file_path"));
    FString fileid = JsonObject->GetStringField(TEXT("file_id"));
    onPttDownloadFileCompleted(result, filepath, fileid);
    }
    }
    }

    播放语音

    此接口用于播放语音。

    接口原型

    ITMGPTT virtual int PlayRecordedFile(const char* filePath)
    ITMGPTT virtual int PlayRecordedFile(const char* filePath, nt voiceType)
    参数
    类型
    含义
    filePath
    const char*
    本地语音文件的路径
    voicetype
    int
    变声类型,请参见 变声接入文档

    错误码

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

    示例代码

    ITMGContextGetInstance()->GetPTT()->PlayRecordedFile(filePath);

    播放语音的回调

    播放语音的回调,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。
    传递的参数包含两个信息,一个是 result,另一个是 file_path。
    参数
    类型
    含义
    code
    int
    当 code 为0时,播放完成
    filepath
    FString
    录制的存放地址

    错误码

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

    示例代码

    void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
    switch (eventType) {
    ...
    else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_PLAY_COMPLETE) {
    int32 result = JsonObject->GetIntegerField(TEXT("result"));
    FString filepath = JsonObject->GetStringField(TEXT("file_path"));
    onPttPlayFileCompleted(result, filepath);
    }
    }
    }

    停止播放语音

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

    接口原型

    ITMGPTT virtual int StopPlayFile()

    示例代码

    ITMGContextGetInstance()->GetPTT()->StopPlayFile();

    获取语音文件的大小

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

    接口原型

    ITMGPTT virtual int GetFileSize(const char* filePath)
    参数
    类型
    含义
    filePath
    const char*
    语音文件的路径,此路径为本地路径

    示例代码

    ITMGContextGetInstance()->GetPTT()->GetFileSize(filePath);

    获取语音文件的时长

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

    接口原型

    ITMGPTT virtual int GetVoiceFileDuration(const char* filePath)
    参数
    类型
    含义
    filePath
    const char*
    语音文件的路径,此路径为本地路径

    示例代码

    ITMGContextGetInstance()->GetPTT()->GetVoiceFileDuration(filePath);

    录音文件极速转文本

    接口
    接口含义
    SpeechToText
    语音识别成文字

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

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

    接口原型

    ITMGPTT virtual void SpeechToText(const char* fileID)
    参数
    类型
    含义
    fileID
    const char*
    语音文件 url

    示例代码

    ITMGContextGetInstance()->GetPTT()->SpeechToText(fileID);

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

    此接口可以指定语言进行识别,也可以将语音中识别到的信息翻译成指定的语言返回。
    注意:
    翻译会收取额外费用,请参见 购买指南

    接口原型

    ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage)
    ITMGPTT virtual int SpeechToText(const char* fileID,const char* speechLanguage,const char* translateLanguage)
    参数
    类型
    含义
    fileID
    const char*
    语音文件 url,录音在服务器存放90天
    speechLanguage
    const char*
    识别出指定文字的语言参数,参数参见 语言参数参考列表
    translatelanguage
    const char*
    翻译成指定文字的语言参数,参数参见 言参数参考列表

    示例代码

    ITMGContextGetInstance()->GetPTT()->SpeechToText(filePath,"cmn-Hans-CN","cmn-Hans-CN");

    识别回调

    将指定的语音文件识别成文字的回调,事件消息为 ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE, 在 OnEvent 函数中对事件消息进行判断。
    传递的参数包含三个信息,result、file_path 和 text,其中 text 为识别的文本。
    参数
    类型
    含义
    result
    int32
    当 code 为0时,录制完成
    fileid
    FString
    语音文件 url,录音在服务器存放 90 天
    text
    FString
    转换的文本结果

    错误码

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

    示例代码

    void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
    switch (eventType) {
    ...
    else if (eventType == ITMG_MAIN_EVNET_TYPE_PTT_SPEECH2TEXT_COMPLETE) {
    int32 result = JsonObject->GetIntegerField(TEXT("result"));
    FString text = JsonObject->GetStringField(TEXT("text"));
    FString fileid = JsonObject->GetStringField(TEXT("file_id"));
    onPttSpeech2TextCompleted(result, fileid, text);
    }
    }
    }

    语音消息音量相关接口

    接口
    接口含义
    GetMicLevel
    获取实时麦克风音量
    SetMicVolume
    设置录制音量
    GetMicVolume
    获取录制音量
    GetSpeakerLevel
    获取实时扬声器音量
    SetSpeakerVolume
    设置播放音量
    GetSpeakerVolume
    获取播放音量

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

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

    接口原型

    ITMGPTT virtual int GetMicLevel()

    示例代码

    ITMGContext.GetInstance(this).GetPTT().GetMicLevel();

    设置语音消息录制音量

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

    接口原型

    ITMGPTT virtual int SetMicVolume(int vol)

    示例代码

    ITMGContextGetInstance()->GetPTT()->SetMicVolume(100);

    获取语音消息录制音量

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

    接口原型

    ITMGPTT virtual int GetMicVolume()

    示例代码

    ITMGContextGetInstance()->GetPTT()->GetMicVolume();

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

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

    接口原型

    ITMGPTT virtual int GetSpeakerLevel()

    示例代码

    ITMGContextGetInstance()->GetPTT()->GetSpeakerLevel();

    设置语音消息播放音量

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

    接口原型

    ITMGPTT virtual int SetSpeakerVolume(int vol)

    示例代码

    ITMGContextGetInstance()->GetPTT()->SetSpeakerVolume(100);

    获取语音消息播放音量

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

    接口原型

    ITMGPTT virtual int GetSpeakerVolume()

    示例代码

    ITMGContextGetInstance()->GetPTT()->GetSpeakerVolume();

    高级 API

    获取版本号

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

    接口原型

    ITMGContext virtual const char* GetSDKVersion()

    示例代码

    ITMGContextGetInstance()->GetSDKVersion();

    设置打印日志等级

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

    接口原型

    ITMGContext int 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 说明如下:
    ITMG_LOG_LEVEL
    含义
    TMG_LOG_LEVEL_NONE
    不打印日志
    TMG_LOG_LEVEL_ERROR
    打印错误日志(默认)
    TMG_LOG_LEVEL_INFO
    打印提示日志
    TMG_LOG_LEVEL_DEBUG
    打印开发调试日志
    TMG_LOG_LEVEL_VERBOSE
    打印高频日志

    示例代码

    ITMGContextGetInstance()->SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);

    设置打印日志路径

    用于设置打印日志路径。默认路径如下。需要在 Init 之前调用。
    平台
    路径
    Windows
    %appdata%\\Tencent\\GME\\ProcessName
    iOS
    Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
    Android
    /sdcard/Android/data/xxx.xxx.xxx/files
    Mac
    /Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents

    接口原型

    ITMGContext virtual int SetLogPath(const char* logDir)
    参数
    类型
    含义
    logDir
    const char*
    路径

    示例代码

    cosnt char* logDir = ""//自行设置路径
    ITMGContext* context = ITMGContextGetInstance();
    context->SetLogPath(logDir);

    回调消息

    消息
    含义
    Data
    例子
    ITMG_MAIN_EVENT_TYPE_ENTER_ROOM
    进入音频房间消息
    result; error_info
    {"error_info":"","result":0}
    ITMG_MAIN_EVENT_TYPE_EXIT_ROOM
    退出音频房间消息
    result; error_info
    {"error_info":"","result":0}
    ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
    房间因为网络等原因断开消息
    result; error_info
    {"error_info":"waiting timeout, please check your network","result":0}
    ITMG_MAIN_EVNET_TYPE_USER_UPDATE
    房间成员更新消息
    user_list; event_id
    {"event_id":1,"user_list":["0"]}
    ITMG_MAIN_EVENT_TYPE_RECONNECT_START
    房间重连开始消息
    result; error_info
    {"error_info":"","result":0}
    ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
    房间重连成功消息
    result; error_info
    {"error_info":"","result":0}
    ITMG_MAIN_EVENT_TYPE_SWITCH_ROOM
    快速切换房间消息
    result; error_info
    {"error_info":"","result":0}
    ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_TYPE
    房间状态切换消息
    result; error_info; sub_event_type; new_room_type
    {"error_info":"","new_room_type":0,"result":0}
    ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_START
    开始跨房连麦消息
    result;
    {"result":0}
    ITMG_MAIN_EVENT_TYPE_ROOM_SHARING_STOP
    跨房连麦停止消息
    result;
    {"result":0}
    ITMG_MAIN_EVENT_TYPE_SPEAKER_DEFAULT_DEVICE_CHANGED
    默认扬声器设备修改消息
    result; error_info
    {"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"扬声器 (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
    ITMG_MAIN_EVENT_TYPE_SPEAKER_NEW_DEVICE
    新增扬声器设备消息
    result; error_info
    {"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"扬声器 (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":false,"result":0}
    ITMG_MAIN_EVENT_TYPE_SPEAKER_LOST_DEVICE
    丢失扬声器设备消息
    result; error_info
    {"deviceID":"{0.0.0.00000000}.{a4f1e8be-49fa-43e2-b8cf-dd00542b47ae}","deviceName":"扬声器 (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":false,"result":0}
    ITMG_MAIN_EVENT_TYPE_MIC_NEW_DEVICE
    新增麦克风设备消息
    result; error_info
    {"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"麦克风 (Realtek High Definition Audio)","error_info":"","isNewDevice":true,"isUsedDevice":true,"result":0}
    ITMG_MAIN_EVENT_TYPE_MIC_LOST_DEVICE
    丢失麦克风设备消息
    result; error_info
    {"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"麦克风 (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
    ITMG_MAIN_EVENT_TYPE_MIC_DEFAULT_DEVICE_CHANGED
    默认麦克风设备修改消息
    result; error_info
    {"deviceID":"{0.0.1.00000000}.{5fdf1a5b-f42d-4ab2-890a-7e454093f229}","deviceName":"麦克风 (Realtek High Definition Audio)","error_info":"","isNewDevice":false,"isUsedDevice":true,"result":0}
    ITMG_MAIN_EVENT_TYPE_CHANGE_ROOM_QUALITY
    房间质量消息
    weight; loss; delay
    {"weight":5,"loss":0.1,"delay":1}
    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}
    ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING
    语音消息正在流式转文本中
    result; file_path; text;file_id
    {"file_id":"","file_path":","text":"","result":0}
    ITMG_MAIN_EVNET_TYPE_PTT_TEXT2SPEECH_COMPLETE
    文本转语音完成消息
    result; text;file_id
    {"file_id":"","text":"","result":0}
    ITMG_MAIN_EVNET_TYPE_PTT_TRANSLATE_TEXT_COMPLETE
    文本翻译完成消息
    result; text;file_id
    {"file_id":"","text":"","result":0}
    
    联系我们

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

    技术支持

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

    7x24 电话支持