The copyrights are held by the original authors, the source is indicated with each contribution. 導入の難しささえどうにかなれば割と使いやすいシステムになったかなとは思います. これを解決するため,https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio より自分の環境にあったバージョンの.whlファイルをダウンロードしてインストール. 最近では音声認識の精度がどんどん上がっていますよね。そんな中、実はこの音声認識がPythonでプログラミングして作れます。とはいえ、何も知らない状態でいきなり音声認識を作るのはやはり難しいでしょう。そこで今回は、Pythonで音声認識を作る方法についてお伝えします。 What are common dataset challenges at scale? Original article was published on Deep Learning on Medium, 投稿を決めてから今回の投稿までかなり時間がかかってしまいました…。時間がかかった分、調べた内容を一気出ししようかと思ったのですが、取り掛かってみると作業が大変でさらに時間がかかりそうになってしまったのでとにかく小出しにしていきます。, 今まで音声データは扱ったことがなかったのですが、ご機会をいただき色々調べたり触ったりさせていただいたのでここにまとめさせていただきます。文章を書くのが苦手なのでちょっと読みにくいと思います。なに言ってるのよくかわからないなどありましたら、twitterのDMやFacebookのメッセンジャーでご連絡いただけると嬉しいです。, 今回はあまりPythonを触ったことない方向けに、ブラウザ上でデータ処理・モデリングを実行できる環境の紹介と、実際に音声データの処理を行い、音声→テキスト変換をしていくタスクの一例について簡単に手順の共有をできたらと思います。, WAVは音声ファイルの一種で、非圧縮のデジタル音源のフォーマットです。MP3と比べて音を圧縮しない為、非常に高音質で多くの情報を持っています。, Tensorflow recognition challengeより入手できるwavファイルの一部をこちらにおいております。「cat」というディレクトリには「cat」と発音された音声が800件格納されています。「bird」、「happy」も同様です。, 本来は各単語について2000弱の音声データがありますが、今回は簡略化のためにそのごく一部を訓練/検証用データとして使用します。, Pythonはローカルで環境構築をしなくてもGoogleアカウントさえあればブラウザ上で自由に記述し実行させることができます。Google Colabというサービスを使うことで、jupyter notebook形式での実行が可能です。(jupyter notebookとはブラウザ上で実行し、実行結果を記録しながらプログラミングを進めるためのツールです。通常pythonファイルは.pyが使われていますが、jupyter notebookで実行できるpythonファイルは.ipynbとなっています), 本記事を書くにあたって、簡単なスクリプトを作ったのでよかったら動かしてみてください。Githubに公開しているので今からGoogle Colabでこれを開く方法をご紹介します。, https://colab.research.google.com/notebooks/へアクセスすると、開くファイルを選択するためのウインドウが開きます。”Github”タブを選択することでGithubにて公開されているPythonファイル(.ipynb)にアクセスすることができます。, ※Githubのアカウントを持ってない場合、Google ColabへアクセスするとGithubのログインやアカウント作成を求められますが、すべてキャンセルしウインドウを閉じた後、「非公式のリポジトリを含める」のチェックを外すと問題なく進めることができます。, 上段の「Github URLを入力するか、組織またはユーザーで検索します」という項目に以下のURLを記入します。https://github.com/yurikimura/AudioProcessing, Enterを押すと下にアクセス可能なファイルが表示されるので、”classifying.ipynb”を選択してクリックしてください。, ファイルを開くことに成功すれば下のような画面が表示されます。これがGoogle Colabのエディタであり、自由にコードを記述し実行できる環境です。Shift+Enterによって各セルごとに実行することができます。, ※実行しようとすると「Googleが作成したノートブックではありません」という警告が出ますが、そのまま実行して大丈夫です。, 始めのセルに並んでいるimport ~ という操作では、ライブラリのインポートを行っています。ライブラリとは、ある目的のために機能をまとめたパッケージの総称を指す言葉です。厳密な話ではないですがちょっとした例をお話しします。, ライブラリは「家電製品」のイメージに近いと思います。例えば「お米を炊く」という作業をしたいときに、「鍋」しかなければ、無事炊き上がるまで台所に張り付いて「鍋の状態がxxになったら火力をzzにする」といった作業を延々行う必要があります。しかし「炊飯器」があれば「スイッチを押す」という動作をするだけで簡単にお米が炊き上がります。それは「炊飯器」に「炊飯窯内部の状態がxxになったらzz程度加熱をする」といった制御が自動的に行われるように組み込まれているためです。, Pythonのライブラリもそれぞれ「aaという入力を受け取ったらbbを出力する」といった機能を持っており、それらをシンプルなコードで実行することができます。特にPythonは他言語に比べて機械学習やデータ処理に関連するライブラリが豊富であるため、機械学習エンジニアが好んで使う言語になっています。, 今回はライブラリとして音声データを扱うLibrosa、グラフ描画のためのmatplotlib、配列処理のためのnumpyなどを使っていきます。モデリングにはtensorflowとkerasを使います。, 音声というのは元々は連続的な情報ですが、今回の処理では離散的な情報に変換する必要があります。音声処理におけるサンプリングは、アナログ信号から1秒間に一定のサンプル数を選択して、アナログ信号をデジタル信号に変換する処理です。ここで、1秒間に取る数値のサンプル数をsampling rateと呼びます。Librosaではsampling rateをパラメータsrで自由に設定することができます。今回は一秒間に16000の数値を取るようにサンプリングしていきます。今回訓練データに使われている音声データのほとんどがちょうど1秒間の発話データなので、各データに対して16000の配列を得ることができます。例えばcatの発話データからlibrosaを使ってサンプリングすると、16000の数値の配列を得ることができました。, ちなみにlibrosa内のresampleというメソッドによってsample rateを定義しなおすこともできます。共有したコードでは16000から8000にresamplingしてみています。, それではtrain/audio内のすべての音声ファイルについて配列を獲得していきましょう。sampling rateは8000にします。, “all_waves”と”all_labels”というリストを作って、その中に情報を入れていきます。”all_waves”には各音声ファイルの配列を入れ、”all_labels”にはそれがどの単語に対応するか(”cat” or “bird” or “happy”)という情報を入れます。(完了まで3分程度かかります), 今回はこれらを訓練データ、検証データとして扱います。本来であればモデルの精度を測るためにテストデータを用意する必要がありますが、今回はこれを実用化する目的はないので割愛します。, ここから深層学習モデルが訓練データとして読み込めるように処理をしていきます。CNN(Convolutional Neural Network)とは基本的な全結合のニューラルネットワークでは簡単に過学習を起こしてしまうようなデータによく応用されており、画像データがとくに有名です。入力データを畳み込み層とプーリング層によって処理することで、与えられているデータをさらに抽象化したデータを獲得します。この畳み込み層・プーリング層に通す作業を何度か繰り返すことで得られた「抽象化されたデータ」を全結合のニューラルネットによって分類します。, 畳み込み処理・プーリング処理に関する詳しい紹介は今回は割愛させていただきますが、towards data scienceやtensorflow公式youtubeなどサクッと閲覧できてとてもわかりやすい教材はたくさんあるのでチェックしてみてください。, 今回入力するデータはサンプリングした音声データの配列と、それに対応する単語ですが、この単語がテキストの[“cat”,”bird”,”happy”]ではラベルとして学習器に対応させることができません。学習器に用いるデータは基本的に数値(intやfloatなど)でなければなりません。そこで、まずこれらの単語にインデックスを振り、“cat”を0、”bird”を1、”happy”を2として数値化します。しかし、分類予測の課題ではこの[0,1,2]を教師データとすることは好ましくありません。それは0,1,2はそれぞれ数字として大小関係を持っているためです。そこで、今回のように質的データを扱う場合はone-hot-vectorを使用します。つまり、catを[1,0,0]、birdを[0,1,0]、happyを[0,0,1]と表現することで分類問題のラベルとすることができます。, これで、ラベルデータの前処理は完了です。これらを訓練用データ、検証用データに分けて組み立てた学習器に入力します。データの分割はscikit-learn、学習器の組み立てにはtensorflow・kerasを使用しました。畳み込み・プーリング層を二つ重ねた後に、全結合で分類予測を行っています。過学習を抑制するためにさらにドロップアウトも行いました。, 学習が進むにつれて損失関数のスコアが下がっていくことがわかります。過学習が起こっている場合、学習データのスコアに比べて検証データのスコアが下がっていきにくいことが確認できます。今回の場合は、懸念がないわけではないですが概ね良好な方かと思います。, これで分類予測モデルの学習が完了しました。今回は精度を測ることはしませんが、お試し用の音声ファイルを用意したのでちゃんと分類ができるか試してみましょう。, for_predictというディレクトリに二つの音声ファイルを用意しました。これらがどの単語を発話しているのかを予測してみましょう。, 答えをいうとaudio1.wavでは”happy”、audio2.wavでは”bird”が発話されています。予測結果を見るに、うまく予測されているようにみえます。(ただし予測結果を誠実な方法で確認するにはやはりテストデータによるスコアの算出が必要です。), ここまで読んでくださりありがとうございます。今回説明しきれなかった箇所もたくさんあるので今後少しずつ書いていければと思います。(そして願わくば文章を書くこと、リサーチをまとめることに慣れていけたらと思っています。)分かりづらいことなどありましたらメッセージいただけたら嬉しいです。ありがとうございました。, MC.AI – Aggregated news about artificial intelligence. Google Cloud PlatformでSpeech APIを使えるようにします。 使いやすいものを導入してオンラインチャットしてみてはいかがでしょうか. 2018年にAI(人工知能)を開発するため、お多福ラボに入社しました。, AIZINEのために私はIT技術コンサルタントとして、記者たちの記事をレビューします。, 本来の音声認識には、いくつかのステップがあります。例えば、最初のステップとして、入力された音声データから周波数や音の大きさなどの特徴量を取り出す必要があり、次のステップでは、取り出した特徴量からどのような「音」が発音されていたか(たとえば「あ」や「A」など)、特定することが必要です。, AI(人工知能)に関する意味のわからない単語に出会うことはよくありますよね。近年注目されているディープラーニング(Deep Learning)に加えて、「RNN」という技術も有名です。しかし意味を理解している人はそれほど多くはないかもしれません。そこで今回は「RNN」とは何か?についてお伝えしていきましょう。, Transcript: how old is the Brooklyn Bridge, なお、Speech-to-Textでは、60分まで無料で音声認識をすることができます。Speech-to-Textには他にもさまざまな機能があり、細かい設定などもできるため、気になったらいろいろな音声認識にチャレンジしましょう!, たとえば、「Python」ではなく「Pyson」という文字を認識させようとした場合、おそらくプログラムは「Python」と認識してしまいますよね。このように、特殊な条件では正しく音声認識できない可能性があります。また、単純な例でもしばしば認識ミスがあるため、重要な場面では使用を十分に検討するようにしましょう。, Pythonの音声認識が使われている参考例:Google Speech-to-textのAPI, まずはCloud Speech-to-Textを使うために、Google Cloudでプロジェクトを作成し、Cloud Speech-to-TextのAPIを有効にします。ここで、秘密鍵がダウンロードできるので、しっかりと保存しておきます。, 先ほどダウンロードした秘密鍵を「GOOGLE_APPLICATION_CREDENTIALS」という環境変数に適用します。, Pythonで音声認識を作るとき、再帰型ニューラルネットワーク(RNN)が重要な仕組みの1つである, Pythonで音声認識を作る前にやるべき下準備は、Cloud Speech-to-Textライブラリのインストール, Pythonで音声認識のプログラムを作るためには、Cloud Speech-to-TextのAPIを使用する, Pythonの音声認識が使われている参考例の1つが、Cloud Speech-to-Textである, Pythonで音声認識のプログラムを作るときの注意点は、認識ミス・情報漏えい・想定外のコストの3つである. Published Date: 14. (1) C:\Users\Username\AppData\Local\Google\Cloud SDK>gcloud auth application-default login によりデフォルト認証設定を行います. 最近ではPythonでプログラミングをしたり、AI(人工知能)を使ったりする人が増えていますよね。, Pythonでプログラミングして作れる物の一つに、音声認識があります。以前は音声認識の精度があまり良くありませんでしたが、近年、音声認識の精度は驚くほど向上し、色々な言語の違いだけではなく、方言まで認識することができるようになったとのこと。さらに、さまざまなAPIの登場などにより、音声認識のプログラムを作成した経験がない人でも簡単に、Pythonで音声認識ができるようになりました。, とはいえ、何も知らない状態でいきなり音声認識を作るのはやはり難しいでしょう。そこで今回は、Pythonで音声認識を作る方法についてお伝えします。1つ1つ丁寧に解説していくので、Pythonの音声認識の作り方について、一緒にマスターしましょう!, ところが、最近の音声認識では今まで複数のステップでおこなっていた処理を、1つのニューラルネットワークでまとめて処理することができるようになりました。これはなぜかというと、ディープラーニングが使われるようになったためです。, 音声認識に使われるニューラルネットワークの1つに、再帰型ニューラルネットワーク(RNN)という、時系列データに特化したニューラルネットワークがあります。ニューラルネットワークはもともと生物の脳をモデルにしたものですが、RNNでは短期記憶ができるような工夫を追加することで、時系列に特化した処理ができるようになっています。時系列データというと、株価などを思い浮かべてしまうかもしれませんが、音声や言語も立派な時系列データの1つです。, たとえば、「これは ペン です」を「です これは ペン」と並び替えたら意味が通じませんよね。このように、単語の順序が意味をもつ音声・言語は、RNNを使って、時系列データとして処理することが可能です。, 次の章からは、簡単に音声認識のプログラムを作ることができるライブラリを使用して、Pythonを使った音声認識のプログラムを作る準備をします。, Pythonで音声認識のプログラムを作る前に、少しだけ下準備が必要です。少しややこしく感じるかもしれませんが、この下準備さえできれば、音声認識のプログラムは意外と簡単に作ることができます。, 音声認識には、GoogleのCloud Speech-to-Textを使用します。この記事の範囲内では無料で使えますが、アカウントの作成が必要なため、まずはアカウントを作成しましょう。Cloud Speech-to-Textの公式ドキュメントを参考にすれば、簡単にアカウントの作成と初期設定をすることができます。, 次は、コマンドを使用してCloud Speech-to-Textのライブラリをインストールします。コマンドを開き、こちらのコードを実行してください。, コマンドが問題なく実行できたら、Pythonで音声認識を作る前の下準備は完了です!次の章では、実際にPythonで音声認識のプログラムを作りましょう。, まずは、プログラムのコードを書くためのPythonファイルを作成しましょう。ファイルを作成したら、こちらのコードをコピーしてください。なお、こちらのコードはCloud Speech-to-Textの下記公式ドキュメントを一部編集したものになっています。, ファイルにコードを記入したら、実際にプログラムを実行しましょう!すると、プログラムの実行結果はこのようになります。, このように、Pythonで簡単に音声認識のプログラムを作ることができましたよね。ちなみに、この記事で使用した音声は英語でしたが、もちろん日本語の音声認識をすることも可能です。日本語で音声認識をしたい場合は、上記のコードの一部を、以下のように変更しましょう。, これで、日本語の音声でも問題なく認識することができるようになりました。なお、このほかにもGoogleのCloud Speech-to-Textでは120の言語に対応しています。, 前の章では、実際にPythonで音声認識のプログラムを作る方法について解説しましたが、この章では、前章で音声認識プログラムを作る際に使用した、GoogleのCloud Speech-to-TextのAPIについて解説します。Cloud Speech-to-Textについてより詳しく知ることで、Pythonの音声認識について理解を深めましょう!, 音声認識のAPIは、GoogleのCloud Speech-to-Textをはじめ、AmazonやFacebook、IBMなどの音声認識APIや、iPhoneに搭載されているSiriのAPIまで、さまざまです。無料のAPIから有料のAPIまでありますが、その中でもGoogleのCloud Speech-to-Textには、他のAPIにはない特徴がたくさんあります。, また、Speech-to-Textには音声認識の方法が3つあることも、大きな特徴の1つです。Speech-to-Textでは、1分以内のデータであれば同期認識、それ以上のデータであれば、なんと8時間のデータまで非同期認識ができるのだとか。, そして、さらに便利なのがストリーミング認識。ストリーミング認識では、マイクなどから認識した音声をリアルタイムで解析し、ユーザーの話と同時進行で音声を認識できます。ここまでくると、AI(人工知能)だけで通訳が完全に成り立つ未来も遠くはないと考えてしまいますよね。, Pythonの音声認識と音声認識APIについて理解が深まったところで、Pythonで音声認識プログラムを作るときの注意点をお伝えします。, まず、プログラムが音声を正しく認識してくれない可能性があ流ので気をつけましょう。最近の音声認識プログラムはかなり正確になっているため、単純な認識ミスというのは少ないです。ただし、現状のPythonの音声認識プログラムでは、私たちの話す音声を100%正しく認識することはできません。, 次に問題なのは、プライバシーです。音声認識はGoogleのAPIを使用しているため、(Google以外のAPIでも同様に)情報漏えいのリスクを懸念しておく必要があります。もし音声認識プログラムをサービスの1つとして提供する可能性があるならば、プライバシーの問題について慎重に検討する必要があるでしょう。, 最後に、APIを使うコストが想定よりも大きくなってしまうリスクがあります。GoogleのCloud Speech-to-Textでは、60分まで無料で音声認識をすることができますが、60分の無料枠を超えた場合、デフォルト設定の標準モデルで15秒ごとに約0.6円の料金が発生してしまうため注意が必要です。, さて、今回はPythonで音声認識を作る方法についてお伝えしました。今回の記事についてまとめると、このような内容になります。, PythonでGoogleのCloud Speech-to-Textを使用することで、とても簡単に音声認識のプログラムを作ることができます。これを機に、音声認識プログラムの作り方や注意点をしっかりと理解してさまざまな音声認識にチャレンジしましょう!, 2014来日してから3年間IoTエンジニアとして働きました、EMS(エネルギーマネジメントシステム)、照明制御又は構造ヘルスモニタリングシステムのプロジェクト等を担当して、IT関係の経験を得ました。 Python環境の構築は各自お願いします. GoogleCloudPlatformにログインしてプロジェクトを適当に作成. ここをクリック 基本的に Google Cloud Speech APIのリアルタイム音声認識は使い物になる精度なのか? の通りに進めれば構築できますが一応. MacOSX mojave Python 3.7 Python 2.7. By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. Why not register and get more from Qiita? 起動したまま別のタブを操作でき,あらゆるコンテンツに字幕をつけたまま画面共有できるので,画面共有するオンライン会議に有効です. gcloud init Original article was published on Deep Learning on Medium. 以前こんなものを作っていた自分は,tkinterを使ってより汎用的なシステムを作れるのではないか?と思い,雰囲気で再現してみました. @1heisuzuki 氏による音声認識からWebカメラ映像への字幕合成までをChromeだけで実行するWebページ 設定を誤った場合や,変更したい場合は Cloud Speech-to-Text APIは一定量無料で利用でき,自分で設定しない限り請求されることはない(Google曰く)ですが,クレジットカード情報の登録が必要な点に注意! エラーが出る場合は, PCがマイク入力を正常に認識し,Pythonがアクセスできているか確認するなどしてみてください. ただし,Windows環境ではpyaudioの依存ライブラリの関係でpip install pyaudioではエラーを起こす場合があります. リアルタイムに変化する音声のスペクトル包絡を表示するPythonスクリプト 要pyqtgraph、numpy、pyaudio、pysas。 母音(あいうえお)で動… このページ( Python, OpenCVで顔検出と瞳検出(顔認識、瞳認識))の下の方にある、 「カメラを使ってリアルタイムで顔検出と瞳検出」を参考にさせていただい … 見せたいウィンドウの横に自分のWebカメラのウィンドウを小さく表示すれば,顔と画面を同時に見せながら字幕も大きく表示することが可能です. リアルタイム音声認識で字幕を付けるシステムhttps://t.co/B04xm7yjZQに影響されて,ウィンドウに認識結果をオーバーレイするアプリケーションを作りました字幕をつけながらPCを操作できるので,共有画面に自分を映したカメラと別アプリを同時に表示することもできますhttps://t.co/tYS7ET4zc0 pic.twitter.com/1Ud3BmV7k0.