質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

解決済

1回答

306閲覧

azureのspeech to textに音声ファイルを送ることができない

mmm1007

総合スコア6

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2023/10/07 09:03

編集2023/10/07 09:07

実現したいこと

azureのspeech to textとrest apiをつかってwavファイルをおくってテキスト化したものを受け取りたい。

前提

azureとの連携の部分はchatgptに型を用意してもらった。
認証トークンは受け取れているため、REST API自体は連携できているみたいだが、
音声ファイルをおくるところでこけているのか、テキスト変換のレスポンスが返ってこない(response_finalのところ)

発生している問題・エラーメッセージ

アクセストークンがおかしいといわれるがazure側から送られてきたので問題はないはず

エラー: { "statusCode": 401, "message": "Unauthorized. Access token is missing, invalid, audience is incorrect (urn:ms.scopedToken or urn:ms.faceSessionToken), or have expired." } 127.0.0.1 - - [07/Oct/2023 17:57:10] "POST /upload HTTP/1.1" 200 -

該当のソースコード

# -*- coding: utf-8 -*- from flask import Flask, render_template, request, jsonify #requestは、Flaskのリクエストオブジェクトで、HTTPリクエストに関する情報を提供 import requests #PythonのHTTPライブラリで、HTTPリクエストを送信するための機能を提供 import os #ファイルのパスを取得するためのライブラリ app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/hello') def hello(): return render_template('hello.html') @app.route('/upload', methods=['POST']) def upload(): file = request.files['file'] filename = file.filename file.save(os.path.join('uploads', filename)) AzureSpeechToTextAPI(file) return 'アップロード完了' #SpeechToTextにREST APIで連携する処理 def AzureSpeechToTextAPI(file): # Speech ServicesのAPIキーとエンドポイントを設定する subscription_key = 'xxxxxxxxxxxxxxxx' endpoint = 'https://japaneast.api.cognitive.microsoft.com/sts/v1.0/issuetoken' # REST APIのヘッダーを設定する headers = { 'Ocp-Apim-Subscription-Key': subscription_key } # REST APIを呼び出して、認証トークンを取得する response = requests.post(endpoint, headers=headers) if response.status_code == 200: access_token = response.text print('認証トークンを取得しました。') # アクセストークンの有効期限を確認する try: expires_in = response.json()['expires_in'] print('アクセストークンの有効期限は{}秒です。'.format(expires_in)) except ValueError as e: print('JSONデータが無効です。') print('エラーメッセージ: {}'.format(str(e))) else: print('認証トークンの取得に失敗しました。') # スピーチ認識のリクエストデータ(例: WAVファイルの音声データ) audio_data = open("uploads/01.male.wav", "rb").read() # スピーチ認識のREST APIリクエスト headers = { "Authorization": "Bearer " + access_token, "Content-Type": "audio/wav", } params = { "api-version": "3.1", "language": "ja-JP", # 言語設定 } response_final = requests.post(endpoint, headers=headers, params=params, data=audio_data) # 結果の表示 if response_final.status_code == 200: print("認識結果: {}".format(response_final.json())) else: print("エラー: {}".format(response_final.text)) if __name__ == '__main__': app.run()

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

Python 3.11.5
Flask 3.0.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PondVillege

2023/10/07 09:29

> アクセストークンがおかしいといわれるがazure側から送られてきたので問題はないはず いや,400番台エラーコードはユーザの不正操作を示すので送ったtokenが間違っているかと... たとえ正しいtokenだとしても「or have expired」の選択肢が残されている限りは,時間切れてるtokenであることを否定できませんし
guest

回答1

0

自己解決

SDKを使用することで解決しました

投稿2023/10/19 03:54

mmm1007

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問