mimi-APIで音声認識試してみた!【図解速習DeepLearning】#018
こんにちは!こーたろーです。
Deep Learning の2021年度の学習計画をそろそろ立てようかと思っています。
いい参考書などありましたら教えて頂けると幸いです。
それでは今回も【図解速習DEEP LEARNING】やっていきます!
今日は、「mimi」というWebAPIサービスを利用していきます。
こちらは、フェアリーデバイセズ株式会社が提供しているものです。
mimiのアカウント作成
mimiのサイトに飛びます。URLは以下のようになっています。
mimi®️ | 音声AIの総合プラットフォーム


下部はこのようになっていますので、「mimi API console」をクリックすると、ログイン画面が出ます。
そこで、Google アカウントでサインインしてみました。

すると、コンソール画面が開きます。

アプリケーションIDおよびクライアントIDの発行
コンソール画面の左上のメニューからアプリケーションを選択します。


新規登録によってアプリケーションを登録していきます。

アプリケーション名とDiscriptionを記入したら「登録」しましょう。

アプリケーションが出来たら、コンソール画面上で、いま登録したアプリをクリックしてみましょう。

「クライアントの登録」をクリックして、クライアントの登録をします。

クライアントIDが発行されました。


これで、「アプリケーションID」「クライアントID」及び「シークレットキー」の発行が完了しました。
アクセストークンの取得
アクセストークンを取得するために、フォームパラメータを設定していきます。
Google Colaboratryで、アカウント情報を記載します。
cli_id = '<アプリケーションID>:<クライアントID>' cli_secret = '<クライアントシークレット>'
次のパラメータは必須となっています。
- client_id
- client_secret
- scope
- grant_type
これらを設定し、トークンを取得します。
詳しくは、こちらをご覧ください(https://mimi.readme.io/docs/firststep-auth)
import requests url = "https://auth.mimi.fd.ai/v2/token" payload = { 'client_id': cli_id, 'client_secret': cli_secret, 'grant_type': 'https://auth.mimi.fd.ai/grant_type/client_credentials', 'scope': 'https://apis.mimi.fd.ai/auth/asr/websocket-api-service;https://apis.mimi.fd.ai/auth/asr/http-api-service;https://apis.mimi.fd.ai/auth/nict-asr/websocket-api-service;https://apis.mimi.fd.ai/auth/nict-asr/http-api-service;https://apis.mimi.fd.ai/auth/nict-tts/http-api-service;https://apis.mimi.fd.ai/auth/nict-tra/http-api-service', } resp = requests.post(url, data=payload) if resp.status_code == 200: token = resp.json()['accessToken'] else: token = '' token
音声認識を試す
音声ファイルを取得してきます。今回は、サンプルファイルを使用しました。
data = requests.get('https://github.com/FairyDevicesRD/libmimiio/raw/master/examples/audio.raw').content
mimi🄬 ASR 版
headers = {
'Authorization': 'Bearer {}'.format(token),
'Content-Type': 'audio/x-pcm;bit=16;rate=16000;channels=1',
'x-mimi-input-language': 'ja',
'x-mimi-process': 'asr',
}
url = 'https://service.mimi.fd.ai/'
resp = requests.post(url, headers=headers, data=data)
resp.json()

mimi🄬 ASR powerd by NICT版
headers = {
'Authorization': 'Bearer {}'.format(token),
'Content-Type': 'audio/x-pcm;bit=16;rate=16000;channels=1',
'x-mimi-input-language': 'ja',
'x-mimi-process': 'nict-asr',
}
url = 'https://service.mimi.fd.ai/'
resp = requests.post(url, headers=headers, data=data)
resp.json()

音声認識では、2ケースとも「とりあえず」と「腹ごしらえ」を認識しました。
機械翻訳を試す
機械翻訳では、「入力言語」と「テキスト」、「出力言語(翻訳対象の言語)」を指定して、HTTPのrequestsでpostします。
headers = {
'Authorization': 'Bearer {}'.format(token),
}
data = {
'source_lang': 'ja',
'target_lang': 'en',
'text': "ちょっと遅い昼食をとるためファミリーレストランに入ったのです。",
}
url = 'https://tra.mimi.fd.ai/machine_translation'
resp = requests.post(url, headers=headers, data=data)
resp.json()

今回は、Textをダイレクトに入力しましたが、音声認識と併せると、音声入力したデータを翻訳することができます。
音声合成を試す
音声合成は、入力言語及びテキストを指定し、HTTP request でpostします。
headers = {
'Authorization': 'Bearer {}'.format(token),
}
data = {
'lang': 'ja',
'engine': 'nict',
'text': 'ちょっと遅い昼食をとるためファミリーレストランに入ったのです。',
}
url = 'https://tts.mimi.fd.ai/speech_synthesis'
resp = requests.post(url, headers=headers, data=data)
if resp.status_code == 200:
with open('resp.wav', 'wb') as fout:
fout.write(resp.content)
"speech synthesis succeeded."
else:
resp.json()
from IPython.display import Audio
Audio('resp.wav')

結果は、入力したテキストを合成した音声データで読み上げてくれました。(音声データに変換されました)
音としては、「棒読みちゃん」みたいな感じでした。
今回は、mimiというサービスをAPIで繋いで音声に関するDeep Learningモデルで、入出力をしてみました。
次回もお楽しみに!
ではでは。
