外部ファイルの認識

Prev Next

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

外部からアクセス可能なオーディオ/ビデオファイルの URLを呼び出して認識し、テキストに変換します。

リクエスト

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

メソッド URI
POST /recognizer/url

リクエストヘッダ

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

リクエストボディ

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

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

boostings

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

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

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

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

リクエスト例

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

curl --location --request POST 'https://clovaspeech-gw.ncloud.com/external/v1/8881/5f7e1b4c866f1c605946c9236f9aa8************/recognizer/url' \
--header 'Content-Type: application/json' \
--header 'X-CLOVASPEECH-API-KEY: {アプリの登録時に発行された Secret Key}' \
--data '{
  "language": "ko-KR",
  "completion":"async",
  "url": "{url}",
  "resultToObs" : true
}'

レスポンス

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

レスポンスボディ

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

フィールド タイプ 必須の有無 説明
result String - レスポンスコード
message String - レスポンスメッセージ
token String - 結果トークン
version String - エンジンバージョン
params Object - パラメータの詳細情報
params.service String - サービスコード
params.domain String - ドメインのタイプ
  • エンジンの呼び出し時に使用
  • general
params.lang String - 認識言語
  • ko | en | enko | ja | zh-cn | zh-tw
    • ko: 韓国語
    • en: 英語
    • enko: 韓国語/英語を同時に翻訳
    • ja: 日本語
    • zh-cn: 中国語(簡体字)
    • zh-tw: 中国語(繁体字)
params.completion String - レスポンス方法
  • sync(同期): 結果を JSON形式で返す
  • async(非同期): Callback URLまたはresultToObs (ObjectStorage)形式で返す
params.callback String - Callback URL
params.diarization Object - 話者認識(分離)の詳細情報
params.diarization.enable Boolean - 話者認識(分離)するかどうか
  • true | false
    • true: 話者を認識
    • false: 話者を認識しない
params.diarization.speakerCountMin Integer - 最小話者数
params.diarization.speakerCountMax Integer - 最大話者数
params.sed Object - イベント検知結果
params.sed.enable Boolean - イベント検知するかどうか
  • true | false(デフォルト)
    • true: イベントを検知
    • false: イベントを検知しない
params.boostings Array - キーワードブーストの詳細情報
params.forbiddens String - 要注意キーワード
params.wordAlignment Boolean Optional 認識結果の音声とテキストをソートして出力するかどうか
  • true(デフォルト) | false
    • true: 出力
    • false: 出力しない
params.fullText Boolean - 認識結果の全テキストを出力するかどうか
  • true(デフォルト) | false
    • true: 出力
    • false: 出力しない
params.noiseFiltering Boolean - ノイズフィルタ有無
  • true(デフォルト) | false
    • true: フィルタは動作
    • false: フィルタは動作しない
params.resultToObs Boolean - Object Storageに結果を保存するかどうか
  • completionasyncの場合にのみ動作
  • true | false(デフォルト)
    • true: 結果を保存
    • false: 結果を保存しない
params.priority Integer - 優先順位
  • 0~4
  • 低いほど優先順位が高い
params.userdata Object - ユーザーデータの詳細情報
params.userdata._ncp_DomainCode String - ドメインコード
  • long-speech | short-speech
    • long-speech: 長文認識
    • short-speech: 短文認識
params.userdata._ncp_DomainId Integer - ドメイン ID
params.userdata._ncp_TaskId Integer - タスク ID
  • 具体的な認識タスクのトレース時に使用
params.userdata._ncp_TraceId String - トレース ID
  • ログのトレース時に使用
progress Integer - 認識進捗率
segments Array - segmentsの詳細情報
text String - 全テキスト
confidence Double - 全体の精度
speakers Array - 全話者の詳細情報
events Array - イベントの詳細情報
eventTypes Array - 認識された全イベントの詳細情報

params.boostings

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

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

segments

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

フィールド タイプ 必須の有無 説明
start Long - 分析開始時刻(ms)
end Long - 分析終了時刻(ms)
text String - 分析テキスト
confidence Double - 分析の精度
  • 0.0~1.0
diarization Object - 認識された話者の詳細情報
diarization.label String - 認識された話者の番号
speaker Object - 変更後の話者の詳細情報
speaker.label String - 変更後の話者の番号
speaker.name String - 変更後の話者の名前
speaker.edited Boolean - 話者は変更されたかどうか
  • true | false(デフォルト)
    • true: 話者を変更
    • false: 同じ話者
words Array<Long, Long, String> - 認識された単語リスト
words.[0] Long - セグメント開始時刻(ms)
words.[1] Long - セグメント終了時刻(ms)
words.[2] String - セグメントテキスト
textEdited String - 変更内容

speakers

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

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

events

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

フィールド タイプ 必須の有無 説明
type String - イベントタイプ
label String - イベント名
labelEdited String - 変更後のイベント名
start Long - イベントの開始時刻
end Long - イベントの終了時刻

eventTypes

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

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

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

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

レスポンス例

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

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

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

{
    "token": "*****f6a1015466bae2c926177f26310",
    "result": "SUCCEEDED",
    "message": "Succeeded"
}

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

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

{
    "result": "COMPLETED",
    "message": "Succeeded",
    "token": "*****166039e486abbb90e4a84c3b3a5",
    "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": "こんにちは。テスト"
                "weight": 1
            }
        ],
        "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"
    ]
}

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: いやいや。チョダントウモロコシってスーパースウィートって意味だった。めっちゃ甘いって意味だったとは誰も知らなかったよ。全然。

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>