ライブ・キャプション

Live Captions APIを使用して、オーディオストリームをトランスクライブし、アプリケーション用にリアルタイムのキャプションを生成します。

Vonage Video Live Captions APIを使用すると、Vonage Videoセッションで、トランスクリプションサービスを使用してエンドユーザにライブキャプションを表示できます。私たちはAWS Transcribeをトランスクリプション・プロバイダーとして使用しています。Live CaptionsはMedia Routerから音声をキャプチャするので、SIPダイアルイン参加者の音声にもキャプションを提供することができます。

「ライブキャプション」は、すべての Applications でデフォルトで有効になっており、利用量に応じた課金制の製品です。ライブキャプションの利用料金は、文字起こしサービスに送信される参加者のオーディオストリーム数(またはストリームID)に基づいて課金されます。詳細については、以下を参照してください。 Live Captions APIの価格設定ルール.

ライブ・キャプション機能は、ルーティングされたセッションでのみサポートされています。 メディア・ルーター).1つのVonageセッションから一度に最大50のオーディオストリームをキャプション用にテープ起こしサービスに送信できます。

Live caption illustration

ライブ・キャプションを有効にする手順

キャプションサービスに音声を公開するには、Client SDKのメソッドを使用します。参照 ライブキャプションの導入

サブスクライブ・クライアントでは、サブスクライバーがストリームのキャプションをサブスクライブするために、それぞれのクライアント SDK メソッドを呼び出します。

ライブキャプションを開始すると、Amazon Transcribeなどのサードパーティの音声トランスクライブサービスに音声を安全にストリーミングします。

クライアントSDKのキャプションAPIを使用して、アプリケーションでライブキャプションの受信を有効または無効にします:

あるウェブクライアントでライブキャプションの受信を開始または停止しても、セッションに接続している他のクライアントが受信するキャプションには影響しません。

対応言語

ライブ・キャプションは様々な言語に対応しています。希望の言語を languageCode オプションでライブ・キャプションを有効にする場合 REST API:

  • "af-ZA" - アフリカーンス
  • "ar-AE" - アラビア語, ガルフ
  • "ar-SA" - アラビア語、現代標準
  • "eu-ES" - バスク
  • "ca-ES" - カタロニア語
  • "zh-HK" - 中国語、簡体字
  • "zh-CN" - 中国語、広東語
  • "zh-TW" - 中国語, 繁体字
  • "hr-HR" - クロアチア語
  • "cs-CZ" - チェコ
  • "da-DK" - デンマーク語
  • "nl-NL" - オランダ語
  • "en-AU" - 英語、オーストラリア語
  • "en-GB" - 英語, イギリス
  • "en-IN" - 英語、インド語
  • "en-IE" - 英語、アイルランド語
  • "en-NZ" - ニュージーランド、英語
  • "en-AB" - イングリッシュ、スコティッシュ
  • "en-ZA" - 英語、南アフリカ語
  • "en-US" - 英語、米国
  • "en-WL" - 英語、ウェールズ語
  • "fa-IR" - ペルシア語
  • "fi-FI" - フィンランド語
  • "fr-FR" - フランス語
  • "fr-CA" - フランス、カナダ
  • "gl-ES" - ガリシア語
  • "de-DE" - ドイツ語
  • "de-CH" - ドイツ語、スイス語
  • "el-GR" - ギリシャ語
  • "he-IL" - ヘブライ語
  • "hi-IN" - ヒンディー語、インド語
  • "id-ID" - インドネシア語
  • "it-IT" - イタリア語
  • "ja-JP" - 日本語
  • "ko-KR" - 韓国語
  • "lv-LV" - ラトビア語
  • "ms-MY" - マレー語
  • "no-NO" - ノルウェー語ブークモール
  • "pl-PL" - ポーランド語
  • "pt-PT" - ポルトガル語
  • "pt-BR" - ポルトガル語、ブラジル語
  • "ro-RO" - ルーマニア語
  • "ru-RU" - ロシア語
  • "sr-RS" - セルビア語
  • "sk-SK" - スロバキア語
  • "so-SO" - ソマリア
  • "es-ES" - スペイン語
  • "es-US" - スペイン語、米国
  • "sv-SE" - スウェーデン
  • "tl-PH" - タガログ語/フィリピン語
  • "th-TH" - タイ
  • "uk-UA" - ウクライナ語
  • "vi-VN" - ベトナム語
  • "zu-ZA" - ズールー

使用例

ライブキャプションは、アプリケーションのユーザーエクスペリエンスとユーザーエンゲージメントを向上させます。キャプションは、アプリケーションのアクセシビリティスコアを向上させ、多くの場合、聴覚障害者の参加につながります。世界には、アプリケーションにキャプションを提供することを義務付ける法律もあります。

キャプションは、制御されていない環境での話者の理解度を高め、ユーザーのエンゲージメントを向上させます。

ライブキャプションは、ルーティングされたセッションでのみ利用可能です。 メディア・ルーター).

ライブ・キャプション機能を有効にする:

  • クライアントオーディオキャプションAPIを使用して、各公開ストリームのオーディオキャプションを開始します。
  • 音声ストリームはサードパーティの音声書き起こしサービス(AWS Transcribe)に送られる。
  • クライアントオーディオキャプションAPIを使用して、各公開ストリームのライブキャプションを購読します。
  • 個々のサブスクライバがキャプションを受信しないことを選択しても、セッションに接続している他のクライアントの他のサブスクライバがキャプションを受信することには影響しない。
  • セッションが終了したとき(すべてのクライアントがセッションへのストリーム配信を停止したとき)、Stop Captions APIを使用して明示的にキャプションを停止できます。を呼び出すときに指定した)最大継続時間が経過すると、音声キャプションは自動的に停止します。 キャプションAPIの開始)の有効期限が切れた。
  • サーバーローテーション中にセッションのライブキャプションが終了します。サーバーローテーションの通知イベントに応じて、ライブキャプションを再開することができます。参照 サーバーのローテーションとセッションの移行.
  • ライブキャプションは、最大4時間後に自動的に停止します。 キャプションAPIの開始.有効期限が切れると、進行中のセッションに影響を与えることなく、音声キャプションは停止します。
  • ライブキャプションは、最後のクライアントがセッションから切断してから60秒後に終了します。

ライブ・キャプション・ステータス更新

ライブキャプションがセッションで開始、停止、失敗したときにイベントを受信するようにWebhookを設定できます。

  1. あなたのところへ Video API ダッシュボード を選択する。 Applications 左側のメニューから
  2. お使いの動画アプリケーションを選択して、クリックしてください 編集.
  3. URLを キャプションのコールバックURL 内部のフィールド ビデオ 能力だ。

安全なコールバック: を設定する。 シグネチャー・シークレット を使うと、署名付きのコールバックで、署名の秘密を使って安全なウェブフック・コールバック・リクエストを使うことができます。参照 安全なコールバック.

ライブキャプションのステータスが変更されると、HTTP POSTがコールバックURLに配信されます。コールバックURLが設定されていない場合、ステータスの更新は配信されません。HTTPリクエストの生データは、以下の形式のJSONエンコードされたメッセージです:

{
  "captionId": "<captionsId>",
  "applicationId": "<applicationId>",
  "sessionId": "<sessionId>",
  "status": "stopped",
  "createdAt": 1651253477,
  "updatedAt": 1651253837,
  "duration": 360,
  "stream": {
    "streamId": "<streamId>",
    "streamStatus": "stopped"
  },
  "languageCode": "en-US",
  "reason": "Maximum duration exceeds.",
  "provider": "aws-transcribe",
  "status": "stopped",
  "group": "captions"
}

JSONオブジェクトには以下のプロパティが含まれる:

  • captionsId オーディオ・キャプション・セッションの固有ID。
  • applicationId あなた固有のビデオアプリケーションID。
  • sessionId オーディオキャプションが開始された OpenTok セッション。
  • status ライブキャプションの現在の状況。
    • "started" Vonage Video APIプラットフォームは、キャプション用の音声ストリームを送信するために必要なリソースを正常に割り当てました。
    • "transcribing" テープ起こしサービスが始まった(キャプションも進行中)。
    • "stopped" キャプションは停止され、すべてのリソースが削除されました。
    • "failed" キャプションが必要なリソースを割り当てられなかったか、キャプション用のストリームを送信できなかった。
  • createdAt 音声キャプションが開始されたUnixタイムスタンプ(Epoch)。
  • updatedAt 音声キャプションが更新されたUnixタイムスタンプ(Epoch)。もし status"stopped"updatedAtは、キャプションが停止した時刻を示す。
  • stream キャプション付きストリームのストリームIDとステータスを含むオブジェクト。
  • languageCode 使用されているBCP-47の言語コード。
  • reason ステータス変更に関する追加のエラー情報。
  • provider音声キャプションに使用される第三者サービスプロバイダー:
    • "aws-transcribe" アマゾンのトランスクライブ
  • group イベントのタイプ。音声キャプションAPIイベントの場合は常に "captions "に設定される。

ライブ・キャプションの導入

を使用する。 ライブキャプションAPI セッションに接続されたパブリッシャーと購読者のリアルタイムの音声キャプションを可能にする。

ライブキャプションは、セッションレベルで REST API.

ライブキャプションは、以下の場合にのみサポートされます。 ルーティングセッション.

Publishing live captions

To enable live captions, initialize the `OTPublisher` component with the optional boolean `publishCaptions` property of the `properties` prop set to true:
<OTPublisher
  style={{width: 400, height: 300}}
  properties={{
    publishCaptions: true,
    // ... other properties
  }}
/>

この設定は false デフォルトで

このプロパティを(Reactの状態変化に基づいて)動的に変更すると、公開ストリームのキャプションのオン/オフを切り替えることができます。

Subscribing to live captions

To start receiving captions, set the `subscribeToCaptions` property of the `properties` prop of the `OTSubscriber` component:
<OTSubscriber
  style={{width: 200, height: 200}}
  properties={{
    subscribeToCaptions: true,
    // ... other properties
  }}
  eventHandlers={{
    captionReceived: event => {
      console.log('Caption received:', event.text);
      console.log('Caption final:', event.isFinal);
    },
  }}
/>

を設定することができます。 subscribeToCaptions プロパティ true ストリームを公開しているクライアントが現在ライブキャプションを公開して いるかどうかに関係なく。サブスクライバは、パブリッシャがキャプションを公開し始めると、キャプションデータの受信を開始する。

購読者は、以下の方法でキャプションを受け取る。 captionReceived イベント・ハンドラ(上図)。

captionReceivedイベントオブジェクトには、次の2つがあります。 properties:

  • テキスト - キャプションのテキスト(文字列)
  • 最終 - キャプションテキストがフレーズ (trueまたはパーシャル(false)。 React Native SDKは、captionsイベントのテキストを表示しません。独自の UI 要素を作成して、captions イベントに基づいてキャプション・テキストをレンダリングできます。

ライブキャプションの受信

Vonage Web Client SDKは、パブリッシャーが自身のキャプションのイベントを受信することをサポートしていません。ローカルクライアントによって公開されたストリームのキャプションをレンダリングするには、キャプションイベントをリッスンするために、(ローカルパブリッシャーのストリームに対する) 非表示のサブスクライバーを作成します。の subscribeToSelf プロパティを設定します。 OTSubscriber への true.この加入者のビデオをレンダリングしてはならない(そのビデオを width そして height を 0 に設定します)、オーディオを購読すべきではありません。 subscribeToAudio をfalseに)。

他のストリームのキャプションと同じように、UIにキャプションを追加することができます。参照 購読者のカスタムレンダリング.

Enabling live captions

パブリッシャーはオプションの boolean publishCaptions パラメータで渡されます。パラメータは properties オブジェクトを返します。このパラメータはデフォルトではfalseである。

const publisher = OT.initPublisher({ publishCaptions: true });

Toggling live captions for a publisher dynamically

ライブキャプションが有効になった後、パブリッシャーは publishCaptions メソッドを呼び出します。このメソッドはパラメータとしてブール値を受け取ります。

以下のコードは、パブリッシャーのライブキャプションを停止する例です。

publisher.publishCaptions(false);

以下のコードは、パブリッシャーに対してライブキャプションを開始する例を示しています。

publisher.publishCaptions(true);

Subscribing to live captions

加入者は、ライブ・キャプションの受信を開始するか停止するかを選択できる。

Subscriber subscribeToCaptions Method

サブスクライバーは、非同期の subscribeToCaptions メソッドを呼び出します。このメソッドはパラメータとしてブール値を受け取ります。

このメソッドは、パブリッシャーが現在ライブキャプションを公開しているか否かに関わらず 呼び出すことができます。サブスクライバーは、パブリッシャーがキャプションを公開し始めると、 キャプションデータの受信を開始します。

以下のコードは、購読者のためにライブ・キャプションを開始する例を示しています。

try {
    await subscriber.subscribeToCaptions(true);
} catch (err) {
    console.warn(err);
}

以下のコードは、購読者のライブ・キャプションを停止する例を示しています。

try {
    await subscriber.subscribeToCaptions(false);
} catch (err) {
    console.warn(err);
}

Enabling live captions for a subscriber

サブスクライバーは、パブリッシャーのライブキャプションをアクティブに購読しているかどうかを、次の方法で確認できます。 isSubscribedToCaptions メソッドを呼び出します。このメソッドにはパラメータはなく、真偽値を返します。

const isSubscribed = subscriber.isSubscribedToCaptions()
console.log(`${isSubscribed} states whether or not a given subscriber is subscribing to live captions`).

Receiving live captions

購読者はイベント経由でキャプションを受け取ります。SDKはキャプションイベントのテキストを表示しません。

Subscriber captionReceived Event

ライブ・キャプションを積極的に購読している購読者は、次のような配信を行います。 captionReceived イベントその captionReceived イベント・オブジェクトには3つのプロパティがある: caption, streamIdそして isFinal. streamId はストリームのIDである。 caption は転写されたテキストである。 isFinal は、キャプションの転記が終了したかどうかを示します。この値は、部分的なキャプションを使用する場合にのみ関連します。開発者は、キャプションのテキストをどこでどのようにレンダリングするかを選択できます。

subscriber.on('captionReceived', function(event){
    console.log(`Caption received for stream ${event.streamId}`);
    console.log(`Caption text: ${event.caption}`);
    console.log(`Final text: ${event.isFinal}`);
})

以下は、部分的なキャプションを使い、パブリッシャーに "This is my sentence" と言わせたときのコンソールログです。

subscriber.on('captionReceived', function(event){
    console.log(`The ${event.isFinal ? 'complete' : 'partial'} caption text is: "${event.caption}"`)
})
// The partial caption text is: "This"
// The partial caption text is: "This is"
// The partial caption text is: "This is my" 
// The complete caption text is: "This is my sentence"

Receiving your own live captions

Vonage Web Client SDKは、パブリッシャーが自身のキャプションのイベントを受信することをサポートしていません。スピーカー自身のキャプションをレンダリングするには、キャプションイベントを listen するために、(ローカルパブリッシャーのストリームに) 非表示のサブスクライバーを作成します。このサブスクライバは、エコーを避けるために、DOM にアタッチされるべきではありませんし、オーディオをサブスクライブすべきではありません。そうすれば、UI にキャプションを追加することができます。

以下は、パブリッシャーが独自のキャプションを受け取るために、非表示のサブスクライバーを 作成する例です。

const captionOnlySub = session.subscribe(
    publisher.stream,
    document.createElement('div'),
    {
    audioVolume: 0,
    testNetwork: true, // This option is only needed in OpenTok.js versions below 2.25.1
    },
);

captionOnlySub.on('captionReceived', (event) => {
    // Do something with the event.caption
});

注: OpenTok.js 2.25.0以前のバージョンでは、次のように設定する必要があります。 testNetwork への true に渡されるオプションの Session.subscribe()バグのため。

Sample

について Vonageウェブサンプル Basic-Captionsサンプル は、Vonage Web Client SDKで構築されたWebアプリでライブキャプションを使用しています。

Publishing live captions

パブリッシャーは、リアルタイムのライブキャプションの公開を開始または停止するには setPublishCaptions() PublisherKitオブジェクトの

publisher.setPublishCaptions(true);

出版社がオーディオトラックを収録していない場合は PublisherKit.PublisherListener.onError() メソッドがエラーで呼び出された場合 code プロパティを PublisherMissingAudioTrack).

Android SDKはパブリッシャーが自身のキャプションのイベントを受け取ることをサポートしていません。スピーカー自身のキャプションをレンダリングするには、(パブリッシャーのストリームに)非表示のサブスクライバーを作成し、キャプションイベントをリッスンします。(次のセクションを参照してください)。

Subscribing to live captions

加入者は、次のコマンドを呼び出すことで、キャプションの受信を開始または停止できる。 subscribeToCaptions() メソッド メソッドを呼び出します:

subscriber.setSubscribeToCaptions(true);

このメソッドは、ストリームのパブリッシャーが現在ライブキャプションを公開しているかどうかに関係なく呼び出すことができます。 このメソッドを呼び出すことができます。サブスクライバは、パブリッシャがキャプションの発行を開始すると、 キャプションデータの受信を開始します。 サブスクライバーはキャプションデータの受信を開始します。

キャプションの受信を停止するには false をメソッドに組み込む:

subscriber.setSubscribeToCaptions(false);

購読者は、ストリームのライブ・キャプションをアクティブに購読しているかどうかを isSubscribedToCaptions() メソッドを使用する:

boolean isSubscribed = subscriber.getSubscribeToCaptions();

購読者はイベント経由でキャプションを受け取ります。SDKはキャプションのテキストをUIに表示しません。 UIには表示されません。その場合は SubscriberKit.CaptionsListener インターフェイスを使用して、キャプション・イベントのリスナーを設定します:

SubscriberKit.CaptionsListener captionsListener = new SubscriberKit.CaptionsListener() {
    @Override
    public void onCaptionText(SubscriberKit subscriber, String text, boolean isFinal) {
        // Display the text in the UI.
    }
}

について hasCaptions() メソッドは、ストリームにキャプションがあるかどうかを報告します:

boolean hasCaptions = stream.hasCaptions();

を実施する。 onStreamHasCaptionsChanged() のメソッドを使用する。 Session.StreamPropertiesListener インターフェイスを使用して、ストリームでキャプションが有効になっているときと無効になっているときを監視します:

Session.StreamPropertiesListener captioningListener = new Session.StreamPropertiesListener() {
    @Override
    public void onStreamHasCaptionsChanged(Session session, Stream stream, boolean hasCaptions) {
        // Adjust UI to indicate that captions are or are not available.
    }
}

Publishing live captions

パブリッシャーは、リアルタイムのライブキャプションの公開を開始したり停止したりできます。 publishCaptions プロパティを使用します:

publisher.publishCaptions = true

出版社がオーディオトラックを収録していない場合は [PublisherKit publisher:didFailWithError:] メッセージが送信される。 code プロパティを OTPublisherMissingAudioTrack.

Vonage iOS SDKは、パブリッシャーが自身のキャプションのイベントを受信することをサポートしていません。スピーカー自身のキャプションをレンダリングするには、(パブリッシャーのストリームに) キャプションイベントをリッスンする隠しサブスクライバーを作成します。(次のセクションを参照してください)。

Subscribing to live captions

購読者は、次のように設定することで、キャプションの受信を開始または停止することができます。 subscribeToCaptions プロパティ プロパティを使用します:

subscriber.subscribeToCaptions = true

このメソッドは、ストリームのパブリッシャーが現在ライブキャプションを公開しているかどうかに関係なく呼び出すことができます。 このメソッドを呼び出すことができます。サブスクライバは、パブリッシャがキャプションの発行を開始すると、 キャプションデータの受信を開始します。 サブスクライバーはキャプションデータの受信を開始します。

キャプションの受信を停止するには、プロパティを false:

subscriber.setSubscribeToCaptions = false

について OTSubscriberKitCaptionsDelegate(_:subscriber:caption:isFinal:) メッセージは メッセージが送信される:

// OTSubscriberKitDelegate callbacks:
func subscriber(_ subscriber: OTSubscriberKit, caption text: NSString, isFinal final: Bool) {
  // Display caption text in UI.
}

のキー・バリュー・オブザーバーを設定することができます。 hasCaptions OTStreamオブジェクトのプロパティ プロパティを使用すると、ストリームでキャプションが有効になっているときと無効になっているときを確認できます。

//add observer on a stream of interest
let hasCaptionsObservation: NSKeyValueObservation = subscriber.stream.observe(\.hasCaptions, options: [.old, .new]) { object, change in
	guard let oldValue = change.oldValue else { return }
	guard let newValue = change.newValue else { return }
	print("KVO change for \(subscriber.stream.streamId) hasCaptions: \(newValue)")
	//manipulate GUI element
}

Publishing live captions

パブリッシャーは、リアルタイムのライブキャプションの公開を開始したり停止したりできます。 publishCaptions プロパティを使用します:

publisher.publishCaptions = YES;

出版社がオーディオトラックを収録していない場合は [PublisherKit publisher:didFailWithError:] メッセージが送信される。 code プロパティを OTPublisherMissingAudioTrack.

Vonage iOS SDKは、パブリッシャーが自身のキャプションのイベントを受信することをサポートしていません。スピーカー自身のキャプションをレンダリングするには、(パブリッシャーのストリームに) キャプションイベントをリッスンする隠しサブスクライバーを作成します。(次のセクションを参照してください)。

Subscribing to live captions

購読者は、次のように設定することで、キャプションの受信を開始または停止することができます。 subscribeToCaptions プロパティ プロパティを使用します:

subscriber.subscribeToCaptions = YES;

このメソッドは、ストリームのパブリッシャーが現在ライブキャプションを公開しているかどうかに関係なく呼び出すことができます。 このメソッドを呼び出すことができます。サブスクライバは、パブリッシャがキャプションの発行を開始すると、 キャプションデータの受信を開始します。 サブスクライバーはキャプションデータの受信を開始します。

キャプションの受信を停止するには、プロパティを NO:

subscriber.setSubscribeToCaptions = NO;

について [OTSubscriberKitCaptionsDelegate subscriber:caption:isFinal:] メッセージは メッセージが送信される:

// OTSubscriber delegate callbacks:
-(void) subscriber:(OTSubscriberKit *)subscriber caption:(NSString *)text isFinal:(BOOL)final {
    // Display caption text in UI.
}

のキー・バリュー・オブザーバーを設定することができます。 hasCaptions OTStreamの プロパティを使用すると、ストリームでキャプションが有効になっているときと無効になっているときを確認できます:

//add observer on a stream of interest
[_subscriber.stream addObserver:self forKeyPath:@"hasCaptions" options:NSKeyValueObservingOptionNew context:NULL];
    
- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context {
    NSLog(@"KVO change for %@ = %@",keyPath, change); 
    //manipulate GUI element
}

Publishing live captions

パブリッシャーは、リアルタイムのライブキャプションの公開を開始したり停止したりできます。 PublishCaptions プロパティを使用します:

publisher.PublishCaptions = true;

出版社がオーディオトラックを収録していない場合は PublisherKit.Error イベントがディスパッチされる、 で ErrorCode ErrorEventArgsオブジェクトのプロパティを PublisherMissingAudioTrack.

Vonage Windows SDKはパブリッシャーが自身のキャプションのイベントを受け取ることをサポートしていません。スピーカー自身のキャプションをレンダリングするには、(パブリッシャーのストリームに) キャプションイベントをリッスンする隠しサブスクライバーを作成します。(次のセクションを参照)。

Subscribing to live captions

購読者は、次のように設定することで、キャプションの受信を開始または停止することができます。 SubscribeToCaptions プロパティ プロパティを使用する:

subscriber.SubscribeToCaptions = true;

このプロパティは、ストリームのパブリッシャーが現在ライブキャプションを公開しているかどうかに関係なく設定できます。 に関係なく設定できます。サブスクライバは、パブリッシャがキャプションの公開を開始すると、キャプションデータの受信を開始します。 キャプションデータの受信を開始します。

キャプションの受信を停止するには、プロパティを false:

subscriber.SubscribeToCaptions = false;

購読者はイベント経由でキャプションを受け取ります。SDKはキャプションのテキストをUIに表示しません。 UIには表示されません。のイベントリスナーを追加します。 Subscriber.CaptionText イベントを開催する:

subscriber.CaptionText += (object sender, Subscriber.CaptionTextArgs e) =>
{
	// Display the text in the UI.
};

について HasCaptions プロパティは、ストリームにキャプションがあるかどうかを報告します:

stream.HasCaptions;

について Session.StreamHasCaptionsChanged イベントは、ストリームでキャプションが有効または無効になったときにディスパッチされます:

session.StreamHasCaptionsChanged += (object sender, StreamEventArgs e) =>
{
	// Adjust UI to indicate that captions are or are not available.
};

Publishing live captions

パブリッシャーは、リアルタイムのライブキャプションの公開を開始または停止するには otc_publisher_set_publish_captions() 関数である:

otc_publisher_set_publish_captions(publisher, OTC_FALSE);

出版社がオーディオトラックを収録していない場合は otc_publisher_callbacks.on_error() コールバック 関数がエラーとともに呼び出され、エラーコードが OTC_PUBLISHER_MISSING_AUDIO_TRACK.

Vonage macOS SDKは、パブリッシャーが自身のキャプションのイベントを受信することをサポートしていません。スピーカー自身のキャプションをレンダリングするには、(パブリッシャーのストリームに) キャプションイベントをリッスンする隠しサブスクライバーを作成します。(次のセクションを参照)。

Subscribing to live captions

加入者は、次のコマンドを呼び出すことで、キャプションの受信を開始または停止できる。 otc_subscriber_set_subscribe_to_captions() 関数である:

otc_subscriber_set_subscribe_to_captions(subscriber, OTC_TRUE);

この関数は、ストリームのパブリッシャーが現在ライブキャプションを公開しているかどうかに関係なく呼び出すことができます。 この関数を呼び出すことができます。サブスクライバは、パブリッシャがキャプションを公開し始めると、 キャプションデータの受信を開始します。 サブスクライバーはキャプションデータの受信を開始します。

キャプションの受信を停止するには OTC_FALSE を関数に追加する:

otc_subscriber_set_subscribe_to_captions(subscriber, OTC_FALSE);

購読者は、ストリームのライブ・キャプションをアクティブに購読しているかどうかを otc_subscriber_get_subscribe_to_captions() 関数である:

otc_bool isSubscribed = otc_subscriber_get_subscribe_to_captions(subscriber);

購読者はイベント経由でキャプションを受け取ります。SDKはキャプションのテキストをUIに表示しません。 UIには表示されません。UIに on_caption_text() のメンバー関数である。 otc_subscriber_callbacks インスタンス のインスタンスを作成し、キャプション・イベントのリスナーを設定します:

static void on_caption_text(otc_subscriber *subscriber,
                                      void *user_data,
                                      const char* text) {
    // Display the text in the UI.
}

subscriber_callbacks.on_caption_text = on_caption_text;

について otc_stream_has_captions() 関数は、ストリームにキャプションがあるかどうかを報告する:

otc_bool hasCaptions = otc_stream_has_captions(stream);

を実施する。 on_stream_has_captions_changed() のメンバー関数である。 otc_session_callbacks インスタンスを使用して、ストリームでキャプションが有効になっているときと無効になっているときを監視します:

static void on_stream_has_captions_changed(otc_session* session,
                                                   void *user_data,
                                             otc_stream *stream,
                                                  otc_bool has_captions) {
  // Adjust UI to indicate that captions are or are not available.
}

session_callbacks.on_stream_has_captions_changed = on_stream_has_captions_changed;

Publishing live captions

パブリッシャーはリアルタイムのライブキャプションの公開を開始したり停止したりできます。 otc_publisher_set_publish_captions() 関数である:

otc_publisher_set_publish_captions(publisher, OTC_FALSE);

出版社がオーディオトラックを収録していない場合は otc_publisher_callbacks.on_error() コールバック 関数がエラーとともに呼び出され、エラーコードが OTC_PUBLISHER_MISSING_AUDIO_TRACK.

Vonage Linus SDKはパブリッシャーが自身のキャプションのイベントを受け取ることをサポートしていません。スピーカー自身のキャプションをレンダリングするには、(パブリッシャーのストリームに) キャプションイベントをリッスンする隠しサブスクライバーを作成します。(次のセクションを参照)。

Subscribing to live captions

加入者は、次のコマンドを呼び出すことで、キャプションの受信を開始または停止できる。 otc_subscriber_set_subscribe_to_captions() 関数である:

otc_subscriber_set_subscribe_to_captions(subscriber, OTC_TRUE);

この関数は、ストリームのパブリッシャーが現在ライブキャプションを公開しているかどうかに関係なく呼び出すことができます。 この関数を呼び出すことができます。サブスクライバは、パブリッシャがキャプションを公開し始めると、 キャプションデータの受信を開始します。 サブスクライバーはキャプションデータの受信を開始します。

キャプションの受信を停止するには OTC_FALSE を関数に追加する:

otc_subscriber_set_subscribe_to_captions(subscriber, OTC_FALSE);

購読者は、ストリームのライブ・キャプションをアクティブに購読しているかどうかを otc_subscriber_get_subscribe_to_captions() 関数である:

otc_bool isSubscribed = otc_subscriber_get_subscribe_to_captions(subscriber);

購読者はイベント経由でキャプションを受け取ります。SDKはキャプションのテキストをUIに表示しません。 UIには表示されません。UIに on_caption_text() のメンバー関数である。 otc_subscriber_callbacks インスタンス のインスタンスを作成し、キャプション・イベントのリスナーを設定します:

static void on_caption_text(otc_subscriber *subscriber,
                                      void *user_data,
                                      const char* text) {
    // Display the text in the UI.
}

subscriber_callbacks.on_caption_text = on_caption_text;

について otc_stream_has_captions() 関数は、ストリームにキャプションがあるかどうかを報告する:

otc_bool hasCaptions = otc_stream_has_captions(stream);

を実施する。 on_stream_has_captions_changed() のメンバー関数である。 otc_session_callbacks インスタンスを使用して、ストリームでキャプションが有効になっているときと無効になっているときを監視します:

static void on_stream_has_captions_changed(otc_session* session,
                                                   void *user_data,
                                             otc_stream *stream,
                                                  otc_bool has_captions) {
  // Adjust UI to indicate that captions are or are not available.
}

session_callbacks.on_stream_has_captions_changed = on_stream_has_captions_changed;

既知の問題

  • 参加者が15秒以上ミュートすると、課金コストを節約するため、サードパーティのトランスクリプション・プロバイダーへの接続が切断されます。再接続してキャプションが再開されるまで、2~5秒かかる場合があります。

詳細情報

参照 この Vonage API サポート記事 詳しい技術仕様とFAQはこちら。

参照 この Vonage API サポート記事 Live Captions APIの価格については、こちらをご覧ください。