#include "tmg_sdk.h"class UEDEMO1_API AUEDemoLevelScriptActor : public ALevelScriptActor, public ITMGDelegate{public:...private:...}
ITMGContext* context = ITMGContextGetInstance();context->SetTMGDelegate(this);
//class ITMGContextITMGContext virtual int Init(const char* sdkAppId, const char* openId)
パラメータ | タイプ | 意味 |
sdkAppId | const char* | Tencent CloudコンソールのGME サービスが提供するAppId。 |
OpenId | const char* | OpenIdはInt64型のみをサポートします(stringに変換されて渡されます)。 |
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());
//ヘッダファイルにおける宣言virtual void Tick(float DeltaSeconds);void AUEDemoLevelScriptActor::Tick(float DeltaSeconds) {Super::Tick(DeltaSeconds);ITMGContextGetInstance()->Poll();}
//関数の実現://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の判断と操作を行います}
int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
参数 | タイプ | 意味 |
dwSdkAppID | int | Tencent CloudコンソールからのAppId番号 |
strRoomID | char* | ルーム番号です。最大127バイトまでをサポートします |
strOpenID | char* | ユーザーID。Initの場合のopenIDと同じです。 |
strKey | char* | |
strAuthBuffer | char* | 返されたauthbuff |
bufferLength | int | 渡されるauthbuffの長さです。推奨値は500です |
unsigned int bufferLen = 512;unsigned char retAuthBuff[512] = {0};QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, "10001", AUTHKEY,retAuthBuff,bufferLen);
ITMGContext virtual int EnterRoom(const char* roomID, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen)
パラメータ | タイプ | 意味 |
roomID | char* | ルーム番号であり、最大127バイトまでをサポートします |
roomType | ITMG_ROOM_TYPE | ルームオーディオタイプ |
authBuffer | char* | 認証コード |
buffLen | int | 認証コードの長さ |
ITMGContext* context = ITMGContextGetInstance();context->EnterRoom(roomID, ITMG_ROOM_TYPE_FLUENCY, (char*)retAuthBuff,bufferLen);
void UBaseViewController::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char *data) {FString jsonData = FString(UTF8_TO_TCHAR(data));TSharedPtr<FJsonObject> JsonObject;TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(FString(UTF8_TO_TCHAR(data)));FJsonSerializer::Deserialize(Reader, JsonObject);if (eventType == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM) {int32 result = JsonObject->GetIntegerField(TEXT("result"));FString error_info = JsonObject->GetStringField(TEXT("error_info"));if (result == 0) {GEngine->AddOnScreenDebugMessage(INDEX_NONE, 20.0f, FColor::Yellow, TEXT("Enter room success."));}else {FString msg = FString::Printf(TEXT("Enter room failed. result=%d, info = %ls"), result, *error_info);GEngine->AddOnScreenDebugMessage(INDEX_NONE, 20.0f, FColor::Yellow, *msg);}onEnterRoomCompleted(result, error_info);}}
エラーコードの値 | 原因と解決策 |
7006 | 次の理由で認証に失敗しました: AppIDが存在しないか、エラーです authbuff認証エラーです 認証期限切れです openIdが仕様に準拠していません |
7007 | 他のルームにいます |
1001 | ルーム参加中でこの操作を繰り返しています。コールバックが戻るまで、ルーム参加インターフェースを呼び出さないことをお勧めします |
1003 | ルームに参加してルームにいますが、もう1回ルーム参加インターフェースを呼び出しました |
1101 | SDKが初期化されていること、openIdが規則に準拠していること、またはインターフェースが同じスレッドで呼び出されていること、およびPollインタフェースが正常に呼び出されていることを確認してください |
void UBaseViewController::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char *data) {FString jsonData = FString(UTF8_TO_TCHAR(data));TSharedPtr<FJsonObject> JsonObject;TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(FString(UTF8_TO_TCHAR(data)));FJsonSerializer::Deserialize(Reader, JsonObject);if (eventType == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM) {int32 result = JsonObject->GetIntegerField(TEXT("result"));FString error_info = JsonObject->GetStringField(TEXT("error_info"));if (result == 0) {GEngine->AddOnScreenDebugMessage(INDEX_NONE, 20.0f, FColor::Yellow, TEXT("Enter room success."));// マイクの起動ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);}else {FString msg = FString::Printf(TEXT("Enter room failed. result=%d, info = %ls"), result, *error_info);GEngine->AddOnScreenDebugMessage(INDEX_NONE, 20.0f, FColor::Yellow, *msg);}onEnterRoomCompleted(result, error_info);}}
void UBaseViewController::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char *data) {FString jsonData = FString(UTF8_TO_TCHAR(data));TSharedPtr<FJsonObject> JsonObject;TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(FString(UTF8_TO_TCHAR(data)));FJsonSerializer::Deserialize(Reader, JsonObject);if (eventType == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM) {int32 result = JsonObject->GetIntegerField(TEXT("result"));FString error_info = JsonObject->GetStringField(TEXT("error_info"));if (result == 0) {GEngine->AddOnScreenDebugMessage(INDEX_NONE, 20.0f, FColor::Yellow, TEXT("Enter room success."));//スピーカーをオンにするITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);}else {FString msg = FString::Printf(TEXT("Enter room failed. result=%d, info = %ls"), result, *error_info);GEngine->AddOnScreenDebugMessage(INDEX_NONE, 20.0f, FColor::Yellow, *msg);}onEnterRoomCompleted(result, error_info);}}
ITMGContext* context = ITMGContextGetInstance();context->ExitRoom();
void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){switch (eventType) {case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:{//処理しますbreak;}}}
ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)
パラメータ | タイプ | 意味 |
authBuffer | char* | 認証 |
authBufferLen | int | 認証の長さ |
ITMGContextGetInstance()->GetPTT()->ApplyPTTAuthbuffer(authBuffer,authBufferLen);
ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath)ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath,const char* translateLanguage,const char* translateLanguage)
参数 | タイプ | 意味 |
filePath | char* | ボイスの保存パス |
speechLanguage | char* | |
translateLanguage | char* | 指定した言語のテキストに翻訳するパラメータです。パラメータについては、音声のテキスト変換の言語パラメータ参照リストをご参照ください。(このパラメータは一時的に無効です。speechLanguageと同じのパラメータを入力してください) |
ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,"cmn-Hans-CN","cmn-Hans-CN");
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
があり、録音を停止して認識を完了した後にテキストを返します。これは、話が終わってから認識されたテキストを返すことに相当します。メッセージ名称 | 意味 |
result | ストリーミングボイス認識が完了したかどうかを判断するための戻りコード |
text | ボイステキスト変換で認識されたテキスト |
file_path | 録音を保存するローカルアドレス |
file_id | 録音はバックグラウンドのURLアドレスにあり、録音はサーバーで90日間保存されます |
void UBaseViewController::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char *data) {FString jsonData = FString(UTF8_TO_TCHAR(data));TSharedPtr<FJsonObject> JsonObject;TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(FString(UTF8_TO_TCHAR(data)));FJsonSerializer::Deserialize(Reader, JsonObject);...else if(eventType == ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE){int32 nResult = JsonObject->GetIntegerField(TEXT("result"));FString text = JsonObject->GetStringField(TEXT("text"));FString fileid = JsonObject->GetStringField(TEXT("file_id"));FString file_path = JsonObject->GetStringField(TEXT("file_path"));onPttStreamRecognitionCompleted(nResult,file_path, fileid, text);}else if(eventType == ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_IS_RUNNING){int32 nResult = JsonObject->GetIntegerField(TEXT("result"));FString text = JsonObject->GetStringField(TEXT("text"));FString fileid = TEXT("STREAMINGRECOGNITION_IS_RUNNING");FString file_path = JsonObject->GetStringField(TEXT("file_path"));onPttStreamRecognitionisRunning(nResult,file_path, fileid, text);}}
エラーコード | 意味 | 処理方式 |
32775 | ストリーミング音声をテキストに変更できませんが、録音は成功しました | UploadRecordedFileインターフェースを呼び出して録音をアップロードし、SpeechToTextインターフェースを呼び出して音声を文字に変換します |
32777 | ストリーミング音声をテキストに変更できませんが、録音とアップロードは成功しました | 返されたメッセージには正常にアップロードしたバックグラウンドURLがあり、SpeechToTextインターフェースを呼び出して音声から文字への変換操作を行います |
32786 | ストリーミング音声をテキストに変更できませんでした | ストリーミングレコーディングステータスでは、ストリーミングレコーディングインターフェースの実行結果が返されるまで待ってください |
ITMGPTT virtual int StopRecording()
ITMGContextGetInstance()->GetPTT()->StopRecording();
この記事はお役に立ちましたか?