【Python】WatsonとA3RTでスピーチ要約

概要&デモ

PythonでリクルートテクノロジーズのA3RTとIBM WatsonのSpeech to Textを組み合わせて、スピーチ内容を要約するアプリケーションを作成しました!

実際の実行でもは下記でご確認下さい。

著作権の都合上音声は無しにしておりますが、音声は「とある地域の天気予報」となっております。

A3RTについて

A3RTはリクルートテクノロジーズが公開しているプロダクトで、今回はその中でText Summarization APIを使用しました。

Text Summarization APIのリクエストパラメータは、以下のようになっています。

非常に分かりやすく、メインの部分は「sentences」と「linenumber」です。

sentencesには要約したい文章を入力します。区切り文字は「。」です。

linenumberは要約したい文章の行数です。例えば 2 とすれば、sentencesに入力した文章の要約が2行で返ってきます。

今回はレスポンスフィールドについては省略させて頂きますが、こちらも非常に分かりやすいものとなっています。

Watsonについて

WatsonはIBMが提供している非常に有名なプロダクトです。

今回はその中でSpeech to TextのAPIを使用しました。

APIの利用方法は先程のA3RTと比べて少しだけ複雑で、詳しいドキュメントは下記の公式ページから確認できます。

https://cloud.ibm.com/apidocs/speech-to-text?code=python

こちらのAPIを簡単に説明すると、音声のバイナリデータを渡すと、それが文字列のデータとして返ってきます。いわゆる、「音声認識」を行うAPIです。

なお、言語(例:日本語、英語、〇〇語)はAPIに音声データを渡すときに指定する必要があります。

こちらもやろうと思えば自動化できるのですが、今回はとりあえず日本語に限定しました。

プログラムの流れ

プログラムの流れとしては、まずPythonのpyaudioというライブラリを使って音声をwav形式のファイルで保存します。

その後、そのwavデータをバイナリの形式でWatsonに渡して、テキストデータを受け取ります。

次に受け取ったテキストデータをA3RTに渡して、要約情報を得ます。

この3ステップで簡単にスピーチの要約ができます!!

このように、複数のAPIを組み合わせる処理は、APIへのリクエストを簡単に書けるPythonと相性が良いです。

もちろん、各APIに渡せるようにフォーマットの整形等は適宜やる必要があります。

今回で言えば、例えばWatsonから返ってくるデータには「。」の情報が無いので、これは自然言語処理的に付与してあげる必要があります。(A3RTの文章処理のストップワードが「。」となっているので)

しかし、それらの処理もPythonを使えば簡単に書くことができます。

APIを使った依頼について

「このAPIを使ってなにかデモを作ってみたいけど、プログラミングが分からない!」という方がいれば、お問い合わせページから是非ご相談下さい。

APIのリクエスト方法が分からない場合もご相談にのれるかと思います。

ご依頼お待ちしております!