MENU
      Object Storageファイルの認識

        Object Storageファイルの認識


        記事の要約

        Classic/VPC環境で利用できます。

        NAVERクラウドプラットフォームの Object Storageにアップロードしたオーディオ/ビデオファイルの固有の URLを呼び出して認識し、テキストに変換します。

        リクエスト

        リクエスト形式を説明します。リクエスト形式は次の通りです。

        メソッドURI
        POST/recognizer/object-storage

        リクエストヘッダ

        CLOVA Speech APIで共通して使用されるヘッダの詳細は、CLOVA Speechの共通ヘッダをご参照ください。

        リクエストボディ

        リクエストボディの説明は次の通りです。

        フィールドタイプ必須の有無説明
        datakeyStringRequiredオーディオ/ビデオファイルの保存先の Object Storageパス
        • Domain作成時に「認識対象の保存パス」の下位項目から入力
          • <例> Object Storageのパスが「/data/sample.wav」で、Domain作成時に指定された認識対象の保存パスが「/data」の場合: "dataKey": "/sample.wav"
        languageStringRequiredテキスト認識言語
        • ko-KR(デフォルト) | en-US | enko | ja | zh-cn | zh-tw
          • ko-kR: 韓国語
          • en-US: 英語
          • enko: 韓国語/英語を同時認識
          • ja: 日本語
          • zh-cn: 中国語(簡体字)
          • zh-tw: 中国語(繁体字)
        completionStringOptional認識リクエスト後のレスポンス方法
        • sync | async(デフォルト)
          • sync(同期): 結果を JSON形式で返す
          • async(非同期): Callback URLまたはresultToObs (ObjectStorage)形式で返す
        callbackStringConditionalCallback URL
        • completionasyncの場合、callbackまたはresultToObsのうちどちらかは必ず入力
        userdataObjectOptionalユーザーデータの詳細情報
        wordAlignmentBooleanOptional認識結果の音声とテキストをソートして出力するかどうか
        • true(デフォルト) | false
          • true: 出力
          • false: 出力しない
        fullTextBooleanOptional認識結果の全テキストを出力するかどうか
        • true(デフォルト) | false
          • true: 出力
          • false: 出力しない
        resultToObsBooleanConditionalObject Storageに結果を保存するかどうか
        • true | false(デフォルト)
          • true: 結果を保存
          • false: 結果を保存しない
        • completionasyncの場合、callbackまたはresultToObsのうちどちらかは必ず入力
        noiseFilteringBooleanOptionalノイズフィルタリングの有無
        • true(デフォルト) | false
          • true: フィルタリングは動作
          • false: フィルタリングは動作しない
        boostingsArrayOptionalキーワードブーストの詳細情報
        • 音声認識率を上げるキーワードリスト
        • useDomainBoostingsと同時使用はできない
        • 最大1,000個まで入力可能
        • ハングル、英語のみサポート
          • 英語: 基本的に小文字に変換、大文字キーワードブーストのリクエスト時は大文字に置換
        • 1音節の単語は誤認識のリスクがあるため、ブーストをサポートしない
          • <例> はい, うん, no
        • スペースの有無に関係なくブースト処理
          • <例> 「クローバースピーチ」と「クローバー スピーチ」のうちどちらか1つのキーワードのみブーストをリクエスト
        • キーワードの長さの制限はないが、ブーストする対象が複数の単語が組み合わされた語句である場合、その語句でなければブーストの影響を受けにくい
          • <例> 「クローバースピーチ」というキーワードをブーストする場合、「クローバースピーチ」を含むすべての文はブーストの影響を受ける
          • <例> 「クローバースピーチのメディア音声認識技術」という組み合わせの長いキーワードをブーストする場合、「クローバースピーチ」だけ含む文はブーストの影響を受けにくい
        useDomainBoostingsBooleanOptionalドメインブーストの使用有無
        • true | false(デフォルト)
          • true: ブーストを使用
          • false: ブーストを使用しない
        • boostingsと同時使用はできない
        forbiddensStringOptional要注意キーワード
        • 音声認識率を下げるキーワードリスト(認識結果に表示したくない場合)
        • キーワード数と長さの制限なし
        • スペース、英字の大文字・小文字のいずれも完全一致が必要
        diarizationObjectOptional話者認識の詳細設定
        diarization.enableBooleanOptional話者認識するかどうか
        • true(デフォルト) | false
          • true: 話者を認識
          • false: 話者を認識しない
        sedObjectOptionalイベント検知結果の詳細情報
        sed.enableBooleanOptionalイベント検知するかどうか
        • true | false(デフォルト)
          • true: イベントを検知
          • false: イベントを検知しない
        formatStringOptionalレスポンス結果を返す形式
        • JSON(デフォルト) | SRT | SMI

        boostings

        boostingsの説明は次の通りです。

        フィールドタイプ必須の有無説明
        wordsStringOptionalキーワードブースト対象の単語リスト
        参考

        completion(リクエスト後のレスポンス方式)をasyncにしてリクエストすると、入力した Callback URLアドレスの有無や resultToObs(ObjectStorage)の有無に応じて認識結果を次のように返します。

        Callback URLresultToObs(ObjectStorage)結果
        URLアドレスありTrueCallback URLと Object Storageの両方に結果を返す
        URLアドレスありFalseCallback URLにのみ結果を返す
        URLアドレスなしTrueObject Storageにのみ結果を返す
        URLアドレスなしFalseエラーを返す

        リクエスト例

        リクエストのサンプルコードは次の通りです。

        curl --location --request POST 'https://clovaspeech-gw.ncloud.com/external/v1/88**/5f7e1b4c866f1c60594****************/recognizer/object-storage' \
        --header 'Content-Type: application/json' \
        --header 'X-CLOVASPEECH-API-KEY: {アプリの登録時に発行された Secret Key}' \
        --data '{
            "dataKey": "{file}.mp3",
            "language": "ko-KR",
            "completion":"sync",
            "callback": "",
            "fullText": true,
            "boostings": [
                {
                    "words": "comma separated words"
                }
            ],
            "forbiddens": "comma separated words"
        }'
        Shell

        レスポンス

        レスポンス形式を説明します。

        レスポンスボディ

        レスポンスボディの説明は次の通りです。

        フィールドタイプ必須の有無説明
        resultString-レスポンスコード
        messageString-レスポンスメッセージ
        tokenString-結果トークン
        versionString-エンジンバージョン
        paramsObject-パラメータの詳細情報
        params.serviceString-サービスコード
        params.domainString-ドメインのタイプ
        • エンジンの呼び出し時に使用
        • general
        params.langString-認識言語
        • ko | en | enko | ja | zh-cn | zh-tw
          • ko: 韓国語
          • en: 英語
          • enko: 韓国語/英語を同時に翻訳
          • ja: 日本語
          • zh-cn: 中国語(簡体字)
          • zh-tw: 中国語(繁体字)
        params.completionString-レスポンス方法
        • sync(同期): 結果を JSON形式で返す
        • async(非同期): Callback URLまたはresultToObs (ObjectStorage)形式で返す
        params.callbackString-Callback URL
        params.diarizationObject-話者認識の詳細情報
        params.diarization.enableBoolean-話者認識するかどうか
        • true | false
          • true: 話者を認識
          • false: 話者を認識しない
        params.diarization.speakerCountMinInteger-最小話者数
        params.diarization.speakerCountMaxInteger-最大話者数
        params.sedObject-イベント検知結果
        params.sed.enableBoolean-イベント検知するかどうか
        • true | false(デフォルト)
          • true: イベントを検知
          • false: イベントを検知しない
        params.boostingsArray-キーワードブーストの詳細情報
        params.forbiddensString-要注意キーワード
        params.wordAlignmentBooleanOptional認識結果の音声とテキストをソートして出力するかどうか
        • true(デフォルト) | false
          • true: 出力
          • false: 出力しない
        params.fullTextBoolean-認識結果の全テキストを出力するかどうか
        • true(デフォルト) | false
          • true: 出力
          • false: 出力しない
        params.noiseFilteringBoolean-ノイズフィルタリングの有無
        • true(デフォルト) | false
          • true: フィルタリングは動作
          • false: フィルタリングは動作しない
        params.resultToObsBoolean-Object Storageに結果を保存するかどうか
        • completionasyncの場合にのみ動作
        • true | false(デフォルト)
          • true: 結果を保存
          • false: 結果を保存しない
        params.priorityInteger-優先順位
        • 0~4
        • 低いほど優先順位が高い
        params.userdataObject-ユーザーデータの詳細情報
        params.userdata._ncp_DomainCodeString-ドメインコード
        • long-speech | short-speech
          • long-speech: 長文認識
          • short-speech: 短文認識
        params.userdata._ncp_DomainIdInteger-ドメイン ID
        params.userdata._ncp_TaskIdInteger-タスク ID
        • 具体的な認識タスクのトレース時に使用
        params.userdata._ncp_TraceIdString-トレース ID
        • ログのトレース時に使用
        progressInteger-認識進捗率
        segmentsArray-segmentsの詳細情報
        textString-全テキスト
        confidenceDouble-全体の精度
        speakersArray-全話者の詳細情報
        eventsArray-イベントの詳細情報
        eventTypesArray-認識された全イベントの詳細情報

        params.boostings

        params.boostingsの説明は次の通りです。

        フィールドタイプ必須の有無説明
        wordsString-キーワードブースト対象の単語リスト

        segments

        segmentsの説明は次の通りです。

        フィールドタイプ必須の有無説明
        startLong-分析開始時刻(ms)
        endLong-分析終了時刻(ms)
        textString-分析テキスト
        confidenceDouble-分析の精度
        • 0.0~1.0
        diarizationObject-認識された話者の詳細情報
        diarization.labelString-認識された話者の番号
        speakerObject-変更後の話者の詳細情報
        speaker.labelString-変更後の話者の番号
        speaker.nameString-変更後の話者の名前
        speaker.editedBoolean-話者は変更されたかどうか
        • true | false(デフォルト)
          • true: 話者を変更
          • false: 同じ話者
        wordsArray<Long, Long, String>-認識された単語リスト
        words.[0]Long-セグメント開始時刻(ms)
        words.[1]Long-セグメント終了時刻(ms)
        words.[2]String-セグメントテキスト
        textEditedString-変更後の内容

        speakers

        speakersの説明は次の通りです。

        フィールドタイプ必須の有無説明
        labelString-すべての話者の番号
        nameString-すべての話者の名前
        editedBoolean-話者は変更されたかどうか
        • true | false(デフォルト)
          • true: 話者を変更
          • false: 同じ話者

        events

        eventsの説明は次の通りです。

        フィールドタイプ必須の有無説明
        typeString-イベントタイプ
        labelString-イベント名
        labelEditedString-変更後のイベント名
        startLong-イベントの開始時刻
        endLong-イベントの終了時刻

        eventTypes

        eventTypesの説明は次の通りです。

        フィールドタイプ必須の有無説明
        labelString-認識されたイベント

        レスポンスステータスコード

        CLOVA Speech APIで共通して使用されるレスポンスステータスコードの詳細は、CLOVA Speechの共通レスポンスステータスコードをご参照ください。

        レスポンス例

        レスポンスのサンプルコードは次の通りです。

        asyncでリクエストして jsonで返す

        asyncでリクエストして json形式で返すレスポンスのサンプルコードは次の通りです。

        {
            "token": "{token}",
            "result": "SUCCEEDED",
            "message": "Succeeded"
        }
        JSON

        syncでリクエストして jsonで返す

        syncでリクエストして json形式で返すレスポンスのサンプルコードは次の通りです。

        {
            "result": "COMPLETED",
            "message": "Succeeded",
            "token": "{token}",
            "version": "ncp_v2_v2.3.0-aa6cd8d-20231205_231211-3cf30bfc_v0.0.0_",
            "params": {
                "service": "ncp",
                "domain": "general",
                "lang": "enko",
                "completion": "sync",
                "callback": "",
                "diarization": {
                    "enable": true,
                    "speakerCountMin": -1,
                    "speakerCountMax": -1
                },
                "sed": {
                    "enable": true
                },
                "boostings": [
                    {
                        "words": "こんにちは。テスト"
                    }
                ],
                "forbiddens": "",
                "wordAlignment": true,
                "fullText": true,
                "noiseFiltering": true,
                "resultToObs": false,
                "priority": 0,
                "userdata": {
                    "_ncp_DomainCode": "NEST",
                    "_ncp_DomainId": 1,
                    "_ncp_TaskId": **442,
                    "_ncp_TraceId": "*****ce98ec342d8a8c8fe9191cec343",
                    "id": 1
                }
            },
            "progress": 100,
            "keywords": {},
            "segments": [
                {
                    "start": 5870,
                    "end": 8160,
                    "text": "ソウルのプールです。",
                    "confidence": 0.9626975,
                    "diarization": {
                        "label": "2"
                    },
                    "speaker": {
                        "label": "2",
                        "name": "B",
                        "edited": false
                    },
                    "words": [
                        [
                            5871,
                            6730,
                            "ソウル"
                        ],
                        [
                            6860,
                            7530,
                            "プールです。"
                        ]
                    ],
                    "textEdited": "ソウルのプールです。"
                },
                {
                    "start": 8160,
                    "end": 12950,
                    "text": "入場料はいくらですか? 5千ウォンです。ありがとうございます。",
                    "confidence": 0.8835926,
                    "diarization": {
                        "label": "1"
                    },
                    "speaker": {
                        "label": "1",
                        "name": "A",
                        "edited": false
                    },
                    "words": [
                        [
                            8161,
                            9220,
                            "入場料は"
                        ],
                        [
                            9390,
                            10020,
                            "いくらですか?"
                        ],
                        [
                            10410,
                            10640,
                            "5千"
                        ],
                        [
                            10710,
                            11140,
                            "ウォンです。"
                        ],
                        [
                            11910,
                            12500,
                            "ありがとうございます。"
                        ]
                    ],
                    "textEdited": "入場料はいくらですか? 5千ウォンです。ありがとうございます。"
                }
            ],
            "text": "ソウルのプールです。入場料はいくらですか? 5千ウォンです。ありがとうございます。",
            "confidence": 0.9071357,
            "speakers": [
                {
                    "label": "1",
                    "name": "A",
                    "edited": false
                },
                {
                    "label": "2",
                    "name": "B",
                    "edited": false
                }
            ],
            "events": [
                {
                    "type": "music",
                    "label": "music",
                    "labelEdited": "music",
                    "start": 1400,
                    "end": 5000
                }
            ],
            "eventTypes": [
                "music"
            ]
        }
        JSON

        syncでリクエストして srtで返す

        syncでリクエストして srt形式で返すレスポンスのサンプルコードは次の通りです。

        1
        00:00:00,000 --> 00:00:01,425
        A: 私、この前
        
        2
        00:00:02,533 --> 00:00:11,550
        A: トウモロコシを食べたんですよ。すごく甘くて美味しかった。てか、私はそれが町の名前だと思ってたんですよ。
        
        3
        00:00:11,550 --> 00:00:19,025
        A: Chosaierのチョ(超)に、甘いのダン(糖)だったとはね。知らなかった。私、チョダンってチョダン豆腐みたいなものだと思ってた。
        
        4
        00:00:19,025 --> 00:00:26,317
        C: サッカリンのことを思い出したけど。ふいとね。作家さんはチョダンを召し上がりましたね。
        
        5
        00:00:26,317 --> 00:00:28,240
        A: トウモロコシにですか?
        
        6
        00:00:28,240 --> 00:00:35,318
        B: ちょっと、甘い味のする豆腐がどこにあるっていうの? この Doは理解できないな。サンドってチョダン地域じゃないの?
        
        7
        00:00:35,318 --> 00:00:42,800
        A: いやいや。チョダントウモロコシってスーパースウィートって意味だった。めっちゃ甘いって意味だったとは誰も知らなかったよ。全然。
        Srt

        syncでリクエストして smiで返す

        syncでリクエストして smi形式で返すレスポンスのサンプルコードは次の通りです。

        <SAMI>
        <Body>
          <SYNC Start=0>
            <P>A: 私、この前
          <SYNC Start=2533>
            <P>A: トウモロコシを食べたんですよ。すごく甘くて美味しかった。てか、私はそれが町の名前だと思ってたんですよ。
          <SYNC Start=11550>
            <P>A: Chosaierのチョ(超)に、甘いのダン(糖)だったとはね。知らなかった。私、チョダンってチョダン豆腐みたいなものだと思ってた。
          <SYNC Start=19025>
            <P>C: サッカリンのことを思い出したけど。ふいとね。作家さんはチョダンを召し上がりましたね。
          <SYNC Start=26317>
            <P>A: トウモロコシにですか?
          <SYNC Start=28240>
            <P>B: ちょっと、甘い味のする豆腐がどこにあるっていうの? この Doは理解できないな。サンドってチョダン地域じゃないの?
          <SYNC Start=35318>
            <P>A: いやいや。チョダントウモロコシってスーパースウィートって意味だった。めっちゃ甘いって意味だったとは誰も知らなかったよ。全然。
        </Body>
        </SAMI>
        Smi

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

        Changing your password will log you out immediately. Use the new password to log back in.
        First name must have atleast 2 characters. Numbers and special characters are not allowed.
        Last name must have atleast 1 characters. Numbers and special characters are not allowed.
        Enter a valid email
        Enter a valid password
        Your profile has been successfully updated.