特定のサーバで取得したトークンしか使えない

92 views
Skip to first unread message

Hideo Matsuo

unread,
Sep 10, 2020, 10:15:39 PM9/10/20
to 多言語音声翻訳サンドボックスサーバー技術フォーラム
現在、3台(A,B,C)のIPアドレスの異なるサーバでNICTの音声認識を利用しようとしています。
【アプリケーションID 】と【アプリケーションシークレット 】が届いたので、A ,B,Cのサーバそれぞれでトークンを取得して見ました。

Aで取得したトークンを使って、サーバにアクセスして音声認識を実行できましが、
Bで取得したトークンを使ってサーバにアクセスすると以下のメッセージが返ります。
ERROR: server rejected WebSocket connection: HTTP 401
Cで取得したトークンを使っても同じです。

Aで取得したトークンは、B、Cでも問題なく接続でき、音声認識の結果が返ってきますが、B、Cで取得したトークンでは、A ,B,Cどのサーバでも401のエラーが出ます。

サーバとトークン取得は何か関係があるのでしょうか?
因みに、AはLINUX、BもLINUX、CはMACです。pythonのバージョンは全て3.7です。

原因がわかりますでしょうか?

高須賀清隆

unread,
Sep 11, 2020, 8:18:51 AM9/11/20
to 多言語音声翻訳サンドボックスサーバー技術フォーラム, matsu...@gmail.com
多言語音声翻訳 API の認証に実行したホストの情報は使用しておりません。
問題の原因として、アクセストークン取得時の環境の違いにより意図通りにスコープを付与できていない可能性があります。
アクセストークン取得リクエストはどのように行っているでしょうか?
また、その後に実行しているプログラム(python3.7?)ではどのようにリクエストしているでしょうか?
ご使用のツールやそのバージョン、実行したコマンドやプログラムについてお教えください。

2020年9月11日金曜日 11:15:39 UTC+9 matsu...@gmail.com:

松尾英夫

unread,
Sep 11, 2020, 9:30:13 PM9/11/20
to 高須賀清隆, 多言語音声翻訳サンドボックスサーバー技術フォーラム
高須様

お世話になっております。
返信ありがとうございます。

トークンの取得はcurlコマンドで添付のget_token.shで取得しました。
今回、使用したプログラム、コマンド、ファイルを添付いたします。
よろしくお願いいたします。

token-A:サーバA(LINUX)正常に認識ができるトークン

{"operationId": "21dc8de1b1c442a98bb30dcba550adfc", "startTimestamp": 1599871812, "selfLink": "https://auth.mimi.fd.ai/v2/operations/21dc8de1b1c442a98bb30dcba550adfc", "progress": 100, "code": 200, "kind": "auth#operation#accesstoken", "endTimestamp": 1599871812, "status": "success", "error": "", "targetLink": "", "accessToken": "bf6b0ee1-f557-40d6-842c-732d78081c67", "expires_in": 3600}


token-B:サーバB(LINUX)認識できないトークン

{"operationId": "1c0a4da72a874b87b4c6ab148951dd42", "startTimestamp": 1599871810, "selfLink": "https://auth.mimi.fd.ai/v2/operations/1c0a4da72a874b87b4c6ab148951dd42", "progress": 100, "code": 200, "kind": "auth#operation#accesstoken", "endTimestamp": 1599871810, "status": "success", "error": "", "targetLink": "", "accessToken": "4a490598-0aa2-40f2-abd0-c00e5b51ff30", "expires_in": 3600}


token-C:サーバC(MAC)  認識できないトークン

{"operationId": "3be8f528ab864a0e8c2b4c963d3ad897", "startTimestamp": 1599871808, "selfLink": "https://auth.mimi.fd.ai/v2/operations/3be8f528ab864a0e8c2b4c963d3ad897", "progress": 100, "code": 200, "kind": "auth#operation#accesstoken", "endTimestamp": 1599871808, "status": "success", "error": "", "targetLink": "", "accessToken": "f4a63867-89ad-41e1-9dff-b2cad8862ca7", "expires_in": 3600}


また、認識処理は以下のコマンドで実行しました。

python3  asr_16.py  access_token_file audio.raw

token-Aで上記コマンドを実行すると以下の結果が得られます。

file size 200692

start recognition...

mfile size 200692

recog-finished: received all from server.

{"type": "asr#nictlvcsr", "session_id": "6d07028e-f492-11ea-9568-42010a920fc6", "status": "recog-finished", "response": [{"result": "ちょっと|チョット|ちょっと|副詞-助詞類接続||||"},{"result": "遅い|オソイ|遅い|形容詞-自立|形容詞・アウオ段|基本形||"},{"result": "昼食|チュウショク|昼食|名詞-一般||||"},{"result": "を|ヲ|を|助詞-格助詞-一般||||"},{"result": "とる|トル|とる|動詞-自立|五段・ラ行|基本形||"},{"result": "ため|タメ|ため|名詞-非自立-副詞可能||||"},{"result": "ファミリーレストラン|ファミリーレストラン|ファミリーレストラン|名詞-一般||||"},{"result": "に|ニ|に|助詞-格助詞-一般||||"},{"result": "入っ|ハイッ|入る|動詞-自立|五段・ラ行|連用タ接続||"},{"result": "た|タ|た|助動詞|特殊・タ|基本形||"},{"result": "の|ノ|の|名詞-非自立-一般||||"},{"result": "です|デス|です|助動詞|特殊・デス|基本形||"},{"result": "|||SENT-START-END||||"},{"result": "|||UTT-END||||"}]}


token-B,token-Cで実行すると以下の結果になります。


file size 200692

start recognition...

ERROR: server rejected WebSocket connection: HTTP 401



松尾英夫
〒108-0072
東京都港区白金1-27-6 白金高輪ステーションビル6F
TEL: 03-5793-3230(9:30 - 18:30)
FAX: 03-5793-3231


2020年9月11日(金) 21:18 高須賀清隆 <taka...@fairydevices.jp>:
doc.zip

高須賀清隆

unread,
Sep 14, 2020, 5:13:11 AM9/14/20
to 多言語音声翻訳サンドボックスサーバー技術フォーラム, matsu...@gmail.com, 多言語音声翻訳サンドボックスサーバー技術フォーラム
各種の情報ありがとうございます。

get_token.sh 内で curl を利用してアクセストークンを取得していらっしゃいますが、
"scope" の指定では -F ではなく --form-string を使用してみてください。

現在の get_token.sh ですと、 ”scope" で指定した文字列内のセミコロンで切られてしまい、
最初に指定しているスコープに対応したサービスしか利用できないアクセストークンが
発行されています。
get_token.sh を拝見するに、 "scope" 先頭に記載してある音声合成だけは
どの環境で発行されたトークンでも利用が可能なはずです。

この事象は curl のバージョンの違いによって起こります。
そのため環境によって音声認識が実行できる環境とできない環境があるのだと思います。
--form-string scope="<scope-A>;<scope-B>..."
というように指定して頂ければ、
どの環境でも全てのスコープを対象としたアクセストークンが発行できると思います。


2020年9月12日土曜日 10:30:13 UTC+9 matsu...@gmail.com:

高須賀清隆

unread,
Sep 15, 2020, 1:04:45 AM9/15/20
to 多言語音声翻訳サンドボックスサーバー技術フォーラム, matsu...@gmail.com, 多言語音声翻訳サンドボックスサーバー技術フォーラム
--form-string を使用することで解決したとのことでよかったです。
また何かご不明な点があればご連絡ください。

2020年9月14日月曜日 18:13:11 UTC+9 高須賀清隆:
Reply all
Reply to author
Forward
0 new messages