tencent cloud

Game Multimedia Engine

製品アップデート情報
製品紹介
製品概要
優位性のある特徴
製品機能
ユースケース
セキュリティコンプライアンス認証
初心者ガイド
SDKダウンロードガイド
製品機能体験
基本機能Demo
シーン化体験
コンソールガイド
使用量の表示
サービスの有効化
クイックスタート
Quick Integration of SDK
Quick Integration of Sample Project
基本機能開発ガイド
Authentication Key
リアルタイム音声ロール設定
音質設定
拡張機能開発ガイド
サーバー側のレコーディング
レンジボイス
3Dサウンド
効果音と伴奏
ネットワークオーディオストリーム転送ルーティング
カスタムメッセージチャネル
社内ファイアーフォール制限への対応について
Language Parameter Reference List
GMEルーム管理機能の導入
クライアントAPI
SDK for Unity
SDK for Unreal Engine
Cocos2D SDK
SDK for Windows
SDK for iOS
SDK for Android
SDK for macOS
H5 SDK
Electron SDK
SDK for Flutter
SDK Version Upgrade Guide
エラーコード
Toolchain
Server APIs
History
Introduction
API Category
Usage APIs
Recording APIs
Making API Requests
Voice Chat APIs
Application APIs
Data Types
Error Codes
よくある質問
製品機能質問
問題解決ガイド
課金について
Sample Projectの使用上の問題
一般的な質問
認証について
リアルタイム音声ルーム参加失敗について
リアルタイム音声利用時に音声が聞こえない問題とオーディオ関連について
ネットワークについて
ボイス・ツー・テキスト変換について
プロジェクトエクスポートについて
Service Agreement
Service Level Agreement
お問い合わせ
用語集
GME ポリシー
データ処理とセキュリティ契約
プライバシーポリシー

Native SDKのクイック導入

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-10-16 19:39:57
開発者がGME製品APIのデバッグ・アクセスを行いやすいように、ここで、Unity開発に適用されるクイックアクセス技術ドキュメントを説明します。
GMEクイックスタート文書は、ユーザーのアクセスを助けるための最も主要なアクセスインターフェースのみを提供しています。

GME利用上の重要事項

GMEは2つの部分に分かれます。リアルタイム音声サービス、音声メッセージおよびテキスト変換サービスを提供しており、これらのサービスの利用はInitやPollなどのコアインターフェースに依存しています。
关于 Init 接口
例えば、リアルタイムの音声サービスを使用する同時に音声メッセージ・サービスも使用する場合、Init初期化インターフェースを1回だけ呼び出す必要があります

インターフェース呼び出しのフローチャート


image



統合の手順

コアインターフェース

リアルタイム音声

音声メッセージ

コアインターフェースのアクセス

1. SDKのダウンロード

ダウンロード案内ページにアクセスして、必要な クライアンSDKをダウンロードします

2. ヘッダーファイルを取り込む

Java
Object-C
C++
import com.tencent.TMG.ITMGContext;
import com.tencent.av.sig.AuthBuffer;
import com.tencent.bugly.crashreport.CrashReport;

#import "GMESDK/TMGEngine.h"
#import "GMESDK/QAVAuthBuffer.h"

#include "auth_buffer.h"
#include "tmg_sdk.h"
#include "AdvanceHeaders/tmg_sdk_adv.h"
#include <vector>


3. シングルトンの取得

音声機能を使用する場合、先にITMGContextオブジェクトを取得する必要があります。

関数のプロトタイプ

Java
Object-C
C++
public static ITMGContext GetInstance(Context context)


+ (ITMGContext*) GetInstance;

__UNUSED static ITMGContext* ITMGContextGetInstance(){
return ITMGContextGetInstanceInner(TMG_SDK_VERSION);
}


サンプルコード

Java
Object-C
C++
//MainActivity.java
import com.tencent.TMG.ITMGContext;
ITMGContext tmgContext = ITMGContext.GetInstance(this);

//TMGSampleViewController.m
ITMGContext* _context = [ITMGContext GetInstance];

ITMGContext* context = ITMGContextGetInstance();


4. コールバックの設定

インターフェースクラスは、Delegateメソッドを使用して、アプリケーションにコールバック通知を送信します。コールバック関数をSDKに登録して、コールバック情報を受信します。ルームに参加する前に設定してください。

関数のプロトタイプとサンプルコード

コールバックの情報を受信するためのコールバックを設定します。ルームに入る前に設定してください。
Java
Object-C
C++
//ITMGContext
public abstract int SetTMGDelegate(ITMGDelegate delegate);

//MainActivity.java
tmgContext.SetTMGDelegate(TMGCallbackDispatcher.getInstance());

ITMGDelegate < NSObject >

//TMGSampleViewController.m
ITMGContext* _context = [ITMGContext GetInstance];
_context.TMGDelegate = [DispatchCenter getInstance];

//SDKの初期化時
m_pTmgContext = ITMGContextGetInstance();
m_pTmgContext->SetTMGDelegate(this);
//デストラクタ内
CTMGSDK_For_AudioDlg::~CTMGSDK_For_AudioDlg()
{
ITMGContextGetInstance()->SetTMGDelegate(NULL);
}


コールバックの例

コンストラクタでこのコールバック関数をオーバーライドして、コールバックパラメータを処理させます。
Java
Object-C
C++
//MainActivity.java
tmgContext.SetTMGDelegate(TMGCallbackDispatcher.getInstance());

//RealTimeVoiceActivity.java
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (type == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)
{
//コールバック処理
}
}

//TMGCallbackDispatcher.java、TMGCallbackHelper.javaおよびTMGDispatcherBase.javaを参考にしてください

//TMGRealTimeViewController.m
TMGRealTimeViewController ()< 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 event
case 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を参考にしてください

//ヘッダファイルにおける宣言
virtual void OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data);
//サンプルコード
void CTMGSDK_For_AudioDlg::OnEvent(ITMG_MAIN_EVENT_TYPE eventType, const char* data)
{
switch(eventType)
{
case ITMG_MAIN_EVENT_TYPE_XXXX_XXXX:
{
//コールバックの処理
}
break;
}
}

パラメータ
タイプ
意味
type
ITMGContext.ITMG_MAIN_EVENT_TYPE
コールバックのイベントタイプ
data
Intent メッセージタイプ
コールバックの関連情報、イベントデータ

5. SDKを初期化する

初期化前のSDKは初期化されていない状態です。リアルタイム音声サービス、音声メッセージサービスおよびボイスツーテキスト変換サービスを使用するには、インターフェースInitを使用してSDKを初期化する必要があります。Initインターフェースを呼び出すスレッドは、他のインターフェースと同じスレッドである必要があります。すべてのメインスレッドでインターフェースを呼び出すことをお勧めします。

インターフェースのプロトタイプ

Java
Object-C
C++
public abstract int Init(String sdkAppId, String openId);

-(int)InitEngine:(NSString*)sdkAppID openID:(NSString*)openID;

ITMGContext virtual int Init(const char* sdkAppId, const char* openId)

パラメータ
タイプ
意味
sdkAppId
string
Tencent Cloud ConsoleのGMEサービスが提供するAppIDです。取得についてはサービス開始ガイドラインをご参照ください。
openID
string
openIDはInt64型(stringに変換して渡す)のみに対応しており、ルールはApp開発者が独自に定め、App内で重複しなければよい。文字列をOpenidとして渡す必要がある場合は、チケットを提出をして開発者に連絡してください。

サンプルコード

Java
Object-C
C++
//MainActivity.java
int nRet = tmgContext.Init(appId, openId);
if (nRet == AV_OK )
{
GMEAuthBufferHelper.getInstance().setGEMParams(appId, key, openId);
// Step 4/11: Poll to trigger callback
//https://www.tencentcloud.com/document/product/607/40860
EnginePollHelper.createEnginePollHelper();
showToast("Init success");
}else if (nRet == AV_ERR_HAS_IN_THE_STATE) // 初期化されました。この操作は成功したと考えられます。
{
showToast("Init success");
}else
{
showToast("Init error errorCode:" + nRet);
}

//TMGSampleViewController.m
QAVResult result = [_context InitEngine:self.appIDTF.text openID:self.openIDTF.text];
if (result == QAV_OK) {
self.isSDKInit = YES;
}

#define SDKAPPID3RD "14000xxxxx"
cosnt char* openId="10001";
ITMGContext* context = ITMGContextGetInstance();
context->Init(SDKAPPID3RD, openId);


6. イベントコールバックのトリガー

updateで周期的にPollを呼び出すことで、イベントのコールバックをトリガできます。PollはGMEのメッセージポンプであり、GMEはイベントのコールバックをトリガするためにPollインターフェースを定期的に呼び出す必要があります。Pollが呼び出されないと、SDKサービス全体が異常に動作します。詳細については、Sample ProjectのEnginePollHelperファイルをご参照ください。

サンプルコード

Java
Object-C
C++
//MainActivity.java
[EnginePollHelper createEnginePollHelper];

//EnginePollHelper.java
private Handler mhandler = new Handler();
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
if (s_pollEnabled) {
if (ITMGContext.GetInstance(null) != null)
ITMGContext.GetInstance(null).Poll();
}
mhandler.postDelayed(mRunnable, 33);
}
};
//Pollの周期的な呼び出しについてはEnginePollHelper.javaの書き方をご参照ください

//TMGSampleViewController.m
[EnginePollHelper createEnginePollHelper];
//EnginePollHelper.mとEnginePollHelper.hを参考にしてください

void TMGTestScene::update(float delta)
{
ITMGContextGetInstance()->Poll();
}


7. ローカル認証計算

AuthBufferを生成し、関連機能の暗号化と認証に使用します。本格なリリースについてバックグラウンドのデプロイキーを使用してください。バックグラウンドのデプロイについては、認証キーをご参照ください。

インターフェースのプロトタイプ

Java
Object-C
C++
AuthBuffer public native byte[] genAuthBuffer(int sdkAppId, String roomId, String openId, String key)

//TMGSampleViewController.m
[EnginePollHelper createEnginePollHelper];
//EnginePollHelper.mとEnginePollHelper.hを参考にしてください

void TMGTestScene::update(float delta)
{
ITMGContextGetInstance()->Poll();
}

パラメータ
タイプ
意味
appId
int
Tencent CloudコンソールからのAppId番号。
roomId
string
ルーム番号であり、最大127文字まで対応しています(オフライン音声ルーム番号のパラメータをnullに設定しなければなりません)。
openId
string
ユーザーID。Initの場合のopenIdと同じです。
key
string
Tencent Cloudコンソールからの権限キー。

サンプルコード

Java
Object-C
C++
//GMEAuthBufferHelper.java
import com.tencent.av.sig.AuthBuffer;//ヘッダーファイル
public byte[] createAuthBuffer(String roomId)
{
byte[] authBuffer;
// Generate AuthBuffer for encryption and authentication of relevant features. For release in the production environment,
// please use the backend deployment key as detailed in https://www.tencentcloud.com/document/product/607/12218
if (TextUtils.isEmpty(roomId))
{
authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(mAppId), "0", mOpenId, mKey);
}else
{
authBuffer = AuthBuffer.getInstance().genAuthBuffer(Integer.parseInt(mAppId), roomId, mOpenId, mKey);
}
return authBuffer;
}

//リアルタイム音声認証
NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:SDKAPPID3RD.intValue roomID:self.roomIdTF.text openID:_openId key:_key];
//音声メッセージ認証
NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:(unsigned int)SDKAPPID3RD.integerValue roomID:nil openID:self.openId key:AUTHKEY];

unsigned int bufferLen = 512;
unsigned char retAuthBuff[512] = {0};
QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, "10001", AUTHKEY,retAuthBuff,bufferLen);


リアルタイム音声アクセス

1. ルームに参加

生成した認証情報を用いてルームに参加します。ルームに参加するとき、デフォルトでマイクとスピーカーはオフです。戻り値がAV_OKの場合はルーム参加が成功したことでなく、呼び出しが成功したことを意味します。

インターフェースのプロトタイプ

Java
Object-C
C++
public abstract int EnterRoom(String roomID, int roomType, byte[] authBuffer);

-(int)EnterRoom:(NSString*) roomId roomType:(int)roomType authBuffer:(NSData*)authBuffer;

ITMGContext virtual int EnterRoom(const char* roomID, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen);

パラメータ
タイプ
意味
roomId
String
ルーム番号、127文字まで入力可能
roomType
int
FLUENCYタイプの音質を使用してルームに参加してください
authBuffer
byte[]
認証コード

サンプルコード

Java
Object-C
C++
//RealTimeVoiceActivity.java
byte[] authBuffer = GMEAuthBufferHelper.getInstance().createAuthBuffer(roomId);
ITMGContext.GetInstance(this).EnterRoom(roomId, roomType, authBuffer);

//TMGRealTimeViewController.m
[[ITMGContext GetInstance] EnterRoom:self.roomIdTF.text roomType:(int)self.roomTypeControl.selectedSegmentIndex + 1 authBuffer:authBuffer];

ITMGContext* context = ITMGContextGetInstance();
context->EnterRoom(roomID, ITMG_ROOM_TYPE_FLUENCY, (char*)retAuthBuff,bufferLen);


入室イベントのコールバック

入室後とメッセージITMG_MAIN_EVENT_TYPE_ENTER_ROOMを送信し、OnEvent関数でコールバックを判定した後に処理します。コールバックが成功した場合、その時点で正常に入室したと判定し、課金が開始されます。
サンプルコードルーム参加イベントや接続切断イベントなど、コールバック処理の関連コードです。
Java
Object-C
C++
//RealTimeVoiceActivity.java
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (type == ITMG_MAIN_EVENT_TYPE_ENTER_ROOM)
{
// Step 6/11 : Perform the enter room event
int nErrCode = TMGCallbackHelper.ParseIntentParams2(data).nErrCode;
String strMsg = TMGCallbackHelper.ParseIntentParams2(data).strErrMsg;
if (nErrCode == AV_OK)
{
appendLog2MonitorView("EnterRomm success");
}else
{
appendLog2MonitorView(String.format(Locale.getDefault(), "EnterRomm errCode:%d errMsg:%s", nErrCode, strMsg));
}
}
}

//TMGRealTimeViewController.m

- (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 event
case 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;

}

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
{
ListMicDevices();
ListSpeakerDevices();
std::string strText = "EnterRoom complete: ret=";
strText += data;
m_EditMonitor.SetWindowText(MByteToWChar(strText).c_str());
}
}
}

エラーコード
エラーコードの値
原因と解決策
7006
次の理由で認証に失敗しました:
AppIDが存在しないか、エラーです
authbuff認証エラーです
認証期限切れです
openIdが仕様に準拠していません
7007
他のルームにいます
1001
ルーム参加中でこの操作を繰り返しています。コールバックが戻るまで、ルーム参加インターフェースを呼び出さないことをお勧めします
1003
ルームに参加してルームにいますが、もう1回ルーム参加インターフェースを呼び出しました
1101
SDKが初期化されていること、openIdが規則に準拠していること、またはインターフェースが同じスレッドで呼び出されていること、およびPollインタフェースが正常に呼び出されていることを確認してください

2. マイクのオン/オフ

このインターフェースは、マイクのオン/オフに使用されます。入室する際、マイクとスピーカーはデフォルトでオフになっています。

サンプルコード

Java
Object-C
C++
//RealTimeVoiceActivity.java
ITMGContext.GetInstance(this).GetAudioCtrl().EnableMic(true);

//TMGRealTimeViewController.m
[[[ITMGContext GetInstance] GetAudioCtrl] EnableMic:YES];

ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);


3. スピーカーのオン/オフ

このインターフェースは、スピーカーのオン/オフに使用されます。

サンプルコード

Java
Object-C
C++
//RealTimeVoiceActivity.java
ITMGContext.GetInstance(this).GetAudioCtrl().EnableSpeaker(true);

//TMGRealTimeViewController.m
[[[ITMGContext GetInstance] GetAudioCtrl] EnableSpeaker:YES];

ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);


4. 退室

このインターフェースを呼び出すと、退室することができます。処理の実行は退室のコールバックを待つ必要があります。

サンプルコード

Java
Object-C
C++
//RealTimeVoiceActivity.java
ITMGContext.GetInstance().ExitRoom();

//TMGRealTimeViewController.m
[[ITMGContext GetInstance] ExitRoom];

ITMGContext* context = ITMGContextGetInstance();
context->ExitRoom();


退室コールバック

退室してからはコールバックが発生します、メッセージはITMG_MAIN_EVENT_TYPE_EXIT_ROOMです。サンプルコードは次の通りです:
Java
Object-C
C++
//RealTimeVoiceActivity.java
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_EXIT_ROOM == type)
{
//退室成功イベントの受信
}
}

//TMGRealTimeViewController.m
-(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{
NSLog(@"OnEvent:%lu,data:%@",(unsigned long)eventType,data);
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:
{
//退室成功イベントの受信
}
break;
}
}

void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
switch (eventType) {
case ITMG_MAIN_EVENT_TYPE_EXIT_ROOM:
{
//処理します
break;
}
}
}


音声メッセージの導入

1. 認証初期化

SDKを初期化してから認証の初期化を呼び出します。authBufferの取得については、前記のリアルタイム音声の認証情報インターフェースgenAuthBufferをご参照ください。

インターフェースのプロトタイプ

Java
Object-C
C++
public abstract int ApplyPTTAuthbuffer(byte[] authBuffer);

-(QAVResult)ApplyPTTAuthbuffer:(NSData *)authBuffer;

ITMGPTT virtual int ApplyPTTAuthbuffer(const char* authBuffer, int authBufferLen)

パラメータ
タイプ
意味
authBuffer
String
認証

サンプルコード

Java
Object-C
C++
//VoiceMessageRecognitionActivity.java
byte[] authBuffer = GMEAuthBufferHelper.getInstance().createAuthBuffer("");
ITMGContext.GetInstance(this).GetPTT().ApplyPTTAuthbuffer(authBuffer);

//TMGPTTViewController.m
NSData* authBuffer = [QAVAuthBuffer GenAuthBuffer:(unsigned int)SDKAPPID3RD.integerValue roomID:nil openID:self.openId key:AUTHKEY];
[[[ITMGContext GetInstance] GetPTT] ApplyPTTAuthbuffer:authBuffer];

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


2. ストリーミング音声認識を起動

このインターフェースは、ストリーミング音声識別の開始に使われています。コールバックにおいて、音声はリアルタイムでテキストに変換されて返されます。録音の停止にはStopRecordingを呼び出します。停止後にコールバックが発生します。

インターフェースのプロトタイプ

Java
Object-C
C++
public abstract int StartRecordingWithStreamingRecognition (String filePath);

public abstract int StopRecording();

-(int)StartRecordingWithStreamingRecognition:(NSString *)filePath;

-(QAVResult)StopRecording;

ITMGPTT virtual int StartRecordingWithStreamingRecognition(const char* filePath)

ITMGPTT virtual int StopRecording()

パラメータ
タイプ
意味
filePath
String
ボイスの保存パス

サンプルコード

Java
Object-C
C++
//VoiceMessageRecognitionActivity.java
ITMGContext.GetInstance(this).GetPTT().StartRecordingWithStreamingRecognition(recordfilePath);

//TMGPTTViewController.m
QAVResult ret = [[[ITMGContext GetInstance] GetPTT] StartRecordingWithStreamingRecognition:[self pttTestPath]];
if (ret == 0) {
self.currentStatus = @"ストリーミング録音を開始します";
}else{
self.currentStatus = @"ストリーミング録音の開始に失敗しました";
}

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


ストリーミング音声識別コールバック

ストリーミング音声認識を開始した後、コールバック関数OnEventでコールバックメッセージを受信する必要があります。イベントメッセージはITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETEがあり、録音を停止して認識を完了した後にテキストを返します。これは、話が終わってから認識されたテキストを返すことに相当します。
OnEvent関数で、必要に応じて適切なイベントメッセージを判断します。渡されるパラメータには次の4つの情報が含まれます。
メッセージ名称
意味
result
ストリーミングボイス認識が完了したかどうかを判断するための戻りコード
text
ボイステキスト変換で認識されたテキスト
file_path
録音を保存するローカルアドレス
file_id
録音はバックグラウンドのURLアドレスにあり、録音はサーバーで90日間保存されます
サンプルコード
Java
Object-C
C++
//VoiceMessageRecognitionActivity.java
import static com.tencent.TMG.ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE;
public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) {
if (type == ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE)
{
// Step 1.3/3 handle ITMG_MAIN_EVNET_TYPE_PTT_STREAMINGRECOGNITION_COMPLETE event
mIsRecording = false;
if (nErrCode ==0)
{
String recordfilePath = data.getStringExtra("file_path");
mRecFilePathView.setText(recordfilePath);

String recordFileUrl = data.getStringExtra("file_id");
mRecFileUrlView.setText(recordFileUrl);
}
else
{
appendLog2MonitorView("Record and recognition fail errCode:" + nErrCode);
}
}

}

//TMGPTTViewController.m

- (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)
{
self.translateTF.text = [data objectForKey:@"text"] ;
self.currentStatus = @"ストリーム変換が完了しました";
}
}
break;
}

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());
}
}
}

エラーコード
エラーコード
意味
処理方式
32775
ストリーミング音声をテキストに変更できませんが、録音は成功しました
UploadRecordedFileインターフェースを呼び出して録音をアップロードし、SpeechToTextインターフェースを呼び出して音声を文字に変換します
32777
ストリーミング音声をテキストに変更できませんが、録音とアップロードは成功しました
返されたメッセージには正常にアップロードしたバックグラウンドURLがあり、SpeechToTextインターフェースを呼び出して音声から文字への変換操作を行います
32786
ストリーミング音声をテキストに変更できませんでした
ストリーミングレコーディングステータスでは、ストリーミングレコーディングインターフェースの実行結果が返されるまで待ってください

3. 録音を停止

このインターフェースは、録音の停止に使われています。このインターフェースが非同期インターフェースであるため、録音を停止した後には録音完了のコールバックがあります。コールバックが成功してから、録音ファイルが利用できるようになります。

インターフェースのプロトタイプ

Java
Object-C
C++
public abstract int StopRecording();

-(QAVResult)StopRecording;

ITMGPTT virtual int StopRecording();


サンプルコード

Java
Object-C
C++
//VoiceMessageRecognitionActivity.java
ITMGContext.GetInstance(this).GetPTT().StopRecording();

//TMGPTTViewController.m

- (void)stopRecClick {
// Step 3/12 stop recording, need handle ITMG_MAIN_EVNET_TYPE_PTT_RECORD_COMPLETE event
//https://www.tencentcloud.com/document/product/607/15221
QAVResult ret = [[[ITMGContext GetInstance] GetPTT] StopRecording];
if (ret == 0) {
self.currentStatus = @"録音を停止します";
}else{
self.currentStatus = @"録音の停止に失敗しました";
}
}

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



ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック