#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* | - |
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* | 방 ID, 최대 127자 지원 |
strOpenID | char* | 사용자 ID. 초기화 중 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* | 방 ID, 최대 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 | 사용자는 이미 방에 들어가는 과정에 있었지만 이 작업을 반복했습니다. 방 입장 콜백이 반환될 때까지 방 입장 API를 호출하지 않는 것이 좋습니다. |
1003 | 사용자가 이미 방에 있었고 API를 입력하는 방을 다시 호출함 |
1101 | SDK가 초기화되었는지, openId가 규칙을 준수하는지, API가 동일한 스레드에서 호출되는지, Poll API가 정상적으로 호출되는지 확인 |
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* | 오디오 파일이 번역될 언어이며, 매개변수는 Language Parameter Reference List 참고(현재 이 매개변수는 사용할 수 없으며, speechLanguage와 동일한 값을 입력하십시오) |
ITMGContextGetInstance()->GetPTT()->StartRecordingWithStreamingRecognition(filePath,"cmn-Hans-CN","cmn-Hans-CN");
ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE
입니다. 즉, 녹화가 중지되고 인식이 완료된 후 텍스트를 반환합니다. 이는 한 단락을 말한 이후에 인식된 텍스트를 반환하는 것과 같습니다.메시지 이름 | 의미 |
result | 스트리밍 음성 인식 성공 여부를 판단하기 위한 반환 코드 |
text | 음성에서 변환된 텍스트 |
file_path | 저장된 녹음 파일의 로컬 경로 |
file_id | 90일 동안 보관되는 녹음 파일의 백엔드 url 주소 |
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 API를 호출하여 녹음 파일을 업로드한 다음 SpeechToText API를 호출하여 음성을 텍스트로 변환 |
32777 | 스트리밍 음성을 텍스트로 변환하는 데 실패했지만 녹음 및 업로드는 성공함 | 반환된 메시지에는 업로드 성공 후 백엔드 url이 포함되어 있으며, SpeechToText API를 호출하여 음성을 텍스트로 변환 |
32786 | 스트리밍 음성-텍스트 변환 실패 | 스트리밍 녹화 중 스트리밍 녹화 API의 실행 결과가 반환될 때까지 기다리십시오 |
ITMGPTT virtual int StopRecording()
ITMGContextGetInstance()->GetPTT()->StopRecording();
문제 해결에 도움이 되었나요?