はじめに

このハンズオンでは、AmiVoice APIの基本的なリクエスト方法と機能について学びます。

ハンズオンの準備

  • ハンズオンで音声認識を実行するためにcurlが実行できる環境をご用意ください。
  • ウェビナー案内メールに記載されたURLまたはチャット欄から、ハンズオンで使用する音声ファイルをダウンロードしてください。

確認事項

  • 前日にお送りしたメールに、AmiVoiceAPIのマイページにログインするためのユーザーIDとパスワードを記載しています。本ウェビナー中のみ利用可能なアカウントになりますので、ハンズオンの際にご利用ください。既にアカウントを登録されている方は、ご自身のアカウントをお使いいただくことも可能です。
    ※ハンズオンには、単語登録の実行が含まれます。ご自身のアカウントで既に単語登録をされている場合は、ご利用中の環境に影響がないように、メールに記載されたアカウントをご使用ください。​
  • ハンズオンの内容でご不明点がありましたら、zoomのQ&Aよりご連絡ください。

音声認識について

  • AmiVoice APIでは、同じ音声を送信しても同じ結果が得られるとは限りません。これは音声認識エンジンが日々更新されていること、音声認識サーバの負荷状況により若干の計算量の調整を行っているためです。
    ハンズオンに記載されているレスポンス例と実際の音声認識結果が異なる場合がありますので、ご了承ください。

リクエスト例について

  • 各手順にはリクエスト例を記載しています。リクエストが上手く実行できない場合や答えを確認する際にご覧ください。
  • リクエスト例に記載しているコマンドは、linux・mac(ターミナル)・Windows(コマンドプロンプト)で動作確認済みです。前述の環境以外をお使いの場合、リクエスト例のコマンドをそのまま実行するとエラーが発生する可能性があります。お使いの環境やツールに合わせて、適宜書き換える必要がありますのでご注意ください。
  • test.wav等の音声ファイル部分は、ダウンロードした音声ファイルのパスに置き換えてください。配布しているhands-onフォルダをカレントディレクトリとして実行していただくと、置き換えの必要なくお使いいただけます。
  • $APP_KEY%APP_KEY%はご自身のキーに置き換えてください。あらかじめ環境変数として設定していただくと、置き換えの必要なくお使いいただけます。
  • Linux・Mac

    export APP_KEY=40957AE4279C433E3B7FD471DD9252DD4E560DC3368FAF0FC9C1839F17F139F07EB0B24C75ED

    Windows

    set APP_KEY=40957AE4279C433E3B7FD471DD9252DD4E560DC3368FAF0FC9C1839F17F139F07EB0B24C75ED

    ※APPKEYの文字列はご自身のキーに置き換えてください。

  • APIのレスポンスはJSON形式です。認識結果に含まれる日本語は、以下のようにUTF-8をUnicodeエスケープされています。jqコマンドやお使いの開発言語に備わるJSONパーサーをご用意いただくと便利です。
  • {"results":[{"tokens":[{"written":"\u3053\u3093\u306b\u3061\u306f","confidence":0.94,"starttime":370,"endtime":1186,"spoken":"\u3053\u3093\u306b\u3061\u306f"}],"confidence":1.0,"starttime":50,"endtime":1394,"tags":[],"rulename":"","text":"\u3053\u3093\u306b\u3061\u306f"}],"utteranceid":"20250516/09/0196d685a3a30a301cdc94c6_20250516_093644","text":"\u3053\u3093\u306b\u3061\u306f","code":"","message":""}

    (例)jqコマンドを使ったリクエスト

    curl https://acp-api.amivoice.com/v1/nolog/recognize \
    -F u=$APP_KEY \
    -F d=-a-general \
    -F a=@test.wav | jq

    (例)pythonを使ったJSONのパース

    import json
    
    json.loads('{"results":[{"tokens":[{"written":"\u3053\u3093\u306b\u3061\u306f","confidence":0.94,"starttime":370,"endtime":1186,"spoken":"\u3053\u3093\u306b\u3061\u306f"}],"confidence":1.0,"starttime":50,"endtime":1394,"tags":[],"rulename":"","text":"\u3053\u3093\u306b\u3061\u306f"}],"utteranceid":"20250516/09/0196d685a3a30a301cdc94c6_20250516_093644","text":"\u3053\u3093\u306b\u3061\u306f","code":"","message":""}')
                                        

    (例)整形されたレスポンス

    {
        "results": [
            {
            "tokens": [
                {
                "written": "こんにちは",
                "confidence": 0.94,
                "starttime": 370,
                "endtime": 1186,
                "spoken": "こんにちは"
                }
            ],
            "confidence": 1.0,
            "starttime": 50,
            "endtime": 1394,
            "tags": [],
            "rulename": "",
            "text": "こんにちは"
            }
        ],
        "utteranceid": "20250516/10/0196d6a3443f0a3019b094c0_20250516_100906",
        "text": "こんにちは",
        "code": "",
        "message": ""
    }