tencent cloud

フィードバック

Native SDKのクイック導入

最終更新日:2024-01-18 15:42:47
    開発者が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();
    
    
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)