概要

ペッパーの音声認識機能として、Speech Recoボックスがありますが、これで聞き分けられるのは、事前に設定しておいた文字列だけです。
そこで、GCP(Google Cloud Platform)のSpeech APIという音声認識APIとペッパーを提携して、ペッパーの音声認識機能を拡張してみたいと思います。
今回はそれの前段階として、日本語の音声ファイルをテキストに起こし、それをペッパーに喋らせるというものを作りました。ペッパーに録音もさせるのは次回、やってみようと思います。

※当記事のコードは、PythonでCloud Speech APIを叩いて音声をテキスト化をpepperで動くように書き換えたものです。

PythonSDK

PythonSDK(PythonだけでPepperの開発が出来るSDK)を使って開発しています。PythonSDKの導入は↓
https://qiita.com/kyohara/items/ae0dd0f57413caa90674
などをご覧ください。

ソースコード

音声ファイル名(日本語が入ってる)、APIKey、ペッパーのIPアドレスを入れると実行できます。

speech.py
#coding:utf8
import base64
from googleapiclient import discovery
import httplib2

from naoqi import ALProxy #pepperのライブラリを使うため

#ペッパーの接続情報
pepperIP = "YourIPAddress"

#APIキーを設定
key = "YourAPIkey"

#音声を保存するファイル名
WAVE_OUTPUT_FILENAME = "sample.wav"

#インスタンスを生成
tts = ALProxy("ALTextToSpeech",pepperIP,9559)

#APIのURL情報
DISCOVERY_URL = ('https://{api}.googleapis.com/$discovery/rest?'
                 'version={apiVersion}')

#APIの情報を返す関数
def get_speech_service():
    http = httplib2.Http()
    return discovery.build(
        'speech', 'v1', http=http, discoveryServiceUrl=DISCOVERY_URL, developerKey=key)

def SpeechAPI():
    #音声ファイルを開く
    with open(WAVE_OUTPUT_FILENAME, 'rb') as speech:
        speech_content = base64.b64encode(speech.read()) 

    #APIの情報を取得して、音声認識を行う
    service = get_speech_service()
    service_request = service.speech().recognize(
        body={
            'config': {
                'encoding': 'LINEAR16',
                'sampleRateHertz': 44100,
                'languageCode': 'ja-JP', #日本語に設定
                'enableWordTimeOffsets': 'false',
            },
            'audio': {
                'content': speech_content.decode('UTF-8')
                }
            })

    #SpeechAPIによる認識結果を保存
    response = service_request.execute()

    #認識した日本語をペッパーにしゃべらせる。
    for i in response["results"]:
        tts.say(i["alternatives"][0]["transcript"].encode("utf-8"))

if __name__ == "__main__":
    SpeechAPI() 

まとめ

今回は外部APIと連携してPepperに音声ファイルからテキストを取得する機能を搭載しました。やっぱりAPIを使うと出来ることがだいぶ広がりそうです。
次回以降、ペッパーのマイクを用いて、音声ファイルを生成して、それをテキストに起こすというのをやってみたいと思います。

by アトリエスタッフ

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.