目次

新たなる挑戦
お問い合わせ
免責事項
第1章 本書について
1.1 想定している読者
1.2 ちょっとした前提知識
1.3 本書の概要
第2章 音声認識用Webページを作ろう!
2.1 必要なもの
2.2 使用するAWSのサービス
2.3 環境構築
2.4 動作確認
2.5 ソースコードのビルドについて
2.6 ログイン部分のソースコードの解説
2.7 マイクから音声を取得する部分のソースコードの解説
第3章 AWSの音声認識
3.1 使用するAWSのサービス
3.2 環境構築
3.3 動作確認
3.4 ソースコードの解説
第4章 Googleの音声認識
4.1 必要なもの
4.2 環境構築
4.3 動作確認
4.4 ソースコードの解説
第5章 Microsoft Azureの音声認識
5.1 Microsoft Azureとは何か?
5.2 必要なもの
5.3 使用するAWSのサービス
5.4 環境構築
5.5 動作確認
5.6 ソースコードの解説
第6章 AmiVoiceの音声認識
6.1 AmiVoiceとは何か?
6.2 必要なもの
6.3 環境構築
6.4 動作確認
6.5 ソースコードの解説
第7章 おかたづけ
7.1 AWSのおかたづけ
7.2 Googleの音声認識のおかたづけ
7.3 Microsoft Azureのおかたづけ
7.4 ACPのおかたづけ
第8章 まとめ
8.1 音声認識サービスの比較
8.2 音声認識サービスを利用してみて
8.3 音声認識で何ができる?
付録A 執筆環境
A.1 Re:VIEW
A.2 Re:VIEW image for Docker
A.3 Re:VIEW Template
A.4 Docker Desktop for Windows
A.5 Visual Studio Code
A.6 LibreOffice Draw
A.7 Paint.NET
A.8 GIMP
A.9 ICOOON MONO
A.10 モボ
スペシャルサンクス
ooika
健康の対価

新たなる挑戦

 バレンタインが迫る2021年の2月上旬、寒暖差の激しさに毛布に包まる毎日。書きたいものはたくさんありますが、技術書典10が終わってまだ1ヶ月、技術書典11の詳細はまったくわかっていません。そんな中ではありますが、今までにない速度で執筆に着手し始めました。

 これには、本書の内容が大きく関わってきます。今まで書いた技術同人誌は、基本的には知っていることをまとめただけの内容でした。頭の中に入っている知識の裏取りと追加調査した結果を、唸りながら文章という形に抽出したものになります。ベースがあるので、やる気さえあれば本はできあがる自信がありました。

 変わって本書は、まだまだ未知の領域について調べながら書き上げていく予定です。大雑把な構成はできあがっていますが、前提ごとひっくり返される可能性もそこそこある状態です。今までのペースで書いていたら、とてもじゃないですが間に合わないでしょう。

 そこで少しでも早く書き始めようと、こんな時期ながら、まえがきに着手した次第です。この直感はおそらく間違っていません。もし間違っていても構いません。残った時間で完成度を高めることができます。次は、時間が足りなかったことを言い訳にしたくはないのです。

 その分、今の自分に書ける最大限の品質をお届けできると思います。本当にお届けできたかは、ページをめくって確かめてみてください。現時点では白紙ですが、推敲を重ねた解説がそこにはあるはずです。

 …あるよね?

技術書典11の締め切り間近の追記

 過去の自分はこんなこと言ってたんですか!?ゴールデンウィークもあまり進捗がよろしくなく、現在絶賛修羅場中です。あぁ、まだサンプルプログラムができあがってない!まにあえ!まにあえ!

商業化にあたり

 同人版から商業版が出るにあたり、ずいぶんと間が空くことになってしまいました。これは加筆量が多いこともありますが、プライベートの予定がびっちりと埋まっていたことの方が大きいです。

 私事ではありますが、2021年11月22日に結婚しました。2021年は結婚の準備に引っ越しと、慌ただしい日々を送っていました。

 そして2022年となり、ようやくスケジュールが空いたと思ったら、今度は妻がめでたく妊娠しました。しかも双子ということで、めでたさも2倍です。年齢的に非常に恵まれていることは重々承知しているのですが、執筆面では苦境に立たされることとなりました。ですが、何とか合間合間に検証や執筆を重ね、加筆修正を完了させる目処がついてきました。

 きっとこれから先は、子育てでさらに執筆する余裕がほとんどなくなることでしょう。しかし、子育てを理由に筆を折る姿を子供に見せたくはありません。双子たちに本を書く姿を見せられるよう、家庭に仕事に執筆と、いずれもこなせるよう頑張っていきたいですね。

お問い合わせ

 本書に関するお問い合わせ: mericle.post@gmail.com

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

第1章 本書について

 本書のタイトルは「おためし!リアルタイム音声認識」です。これだけでも何となく察することはできるかもしれませんが、最初に本書がどんな本なのかを説明していきたいと思います。

1.1 想定している読者

 まずは、本書がどんな読者を想定しているかについて説明します。

1.1.1 音声認識について知りたい・試してみたい方

 タイトル通り、音声認識について知りたい方に読んでほしいです。本書は比較的簡単でありながら、わかりやすく結果が目に見えるようなサンプルを用意してみました。音声認識がどんなものなのか、きっと理解してもらえることでしょう。

 また、音声認識について知っている方でも、おそらくどれかひとつくらいは触ったことがない音声認識サービスが出てくるんじゃないでしょうか。本書で扱う範囲ではほとんど同じように見えるかもしれませんが、サービスごとに特徴があっておもしろいです。さらに知りたい場合は、サンプルを色々と改造してみてください。

1.1.2 様々なクラウドサービスに触れてみたい方

 本書では、クラウドサービスとして提供されている音声認識を利用していきます。1個だけに絞ってもよかったのですが、調べてみると思っていたより多くの音声認識サービスが存在していることに気がつきました。だったら、試せそうなものは全部試してしまうのも面白いではないかと思った次第です。

 試してみるクラウドサービスは、AWS、Microsoft Azure、そしてACPです。1音声認識だけではなく、それらのクラウドサービスを始めるとっかかりとしても利用できるはずです。

1.1.3 Webブラウザー上でのマイクの活用法を知りたい方

 音声認識を試すためには、誰かがしゃべった音声が必要となります。本書では用意したWebページから、マイクの音声を拾い上げて音声認識を行います。このWebページでマイクの音声を拾う方法、そこまで多くのサンプルはないんじゃないでしょうか。需要は微妙かもしれませんが、刺さる人には刺さる内容だと思います。

1.2 ちょっとした前提知識

 次に、本書を読むために最低限必要な前提知識について説明させていただきます。必要ない方はどんどん読み飛ばしてください。

1.2.1 そもそも音声認識とは何か?

 音声認識について知りたい方を想定して執筆しているのに、音声認識について何も説明しないまま本題に入るわけにはいきません。音声認識とは何か、簡単ながら説明します。といっても、難しいことはありません。話した言葉、つまり音声を文字に変える技術を音声認識といっているだけです。人間でも、テープ起こしだとか文字起こしという名前の仕事で同じことをやっています。それを機械にやらせることで、今までにない使い方ができるようになりました。パッと思いつくのを挙げてみます。


 ・声で機械に指示を出せるようになりました。iPhoneのSiriとか、AlexaやGoogle Homeのようなスマートスピーカーが有名です。

 ・話していた会話の内容を、その会話中に遡って読めるようになりました。コールセンターのオペレーターや、聴覚障害者向け2に使われています。

 ・生放送で話している内容を、簡単に字幕表示できるようになりました。さすがに人間のプロの方には精度が及ばないのですが、簡単にできるようになったのは大きいです。


 本書のサンプルを応用すれば3、どれも実現可能なことです。そう思えば、ちょっとは興味が湧いてきませんか?

1.2.2 リアルタイムは大変?

 音声認識はリアルタイムにできて当たり前のようなイメージですが、これが結構大変だったりします。音声認識サービスを提供する側としても大変なのですが、利用する側もなかなか大変です。

 たとえば、リアルタイムではない音声認識のサンプルを作る場合、だいたい音声ファイルを音声認識に読み込ませる形になります。プログラミングでファイルを読み込ませる処理というのは比較的簡単な部類で、プログラミングの基本さえできていれば作れるでしょう。音声ファイルの種類が利用する音声認識に対応していないものであったとしても、あらかじめ適当なフリーウェアで変換しておけばいい話です。

 しかし、リアルタイムではそうはいきません。マイクや配信動画などから音声を拝借し、必要であれば音声認識に合わせて音声の加工を行い、さらに遅れないように音声認識へ音声を送り続ける必要があります。音声処理に慣れた方ならなんてことはないかもしれませんが、利用する難易度はずっと高まります。そのぶん、サンプルとしての価値も出るんじゃないかと挑んでみました。

1.2.3 音声認識のクラウドサービス

 パソコンで音声認識を行うためには、そこそこの性能が要求されます。令和の時代のパソコンではもう気にするレベルではないですが、スマートフォンのような小型の機械では少し辛いかもしれません。そういうときは、大雑把に2種類の解決法が考えられます。

 ひとつは音声認識の機能を制限することです。決まった単語や文脈だけに絞って音声認識させることで、少ない計算量で音声認識を可能にする方法です。使える言葉が制限されてしまうので、業務用とかで決まった命令しか使わない機械へ組み込む場合に有効です。

 もうひとつはインターネットを使い、音声認識を別のところにおまかせしてしまう方法です。今回試そうとしているのは、こちらになります。最低限のインターネット回線が要求される欠点こそありますが、より精度の高い音声認識を可能にします。まさに、スマートフォンにはピッタリな方式といえます。もちろん、パソコンであってもその恩恵を十分に受けることができます。

1.3 本書の概要

 さて残るは、次章からの構成についてです。本書の構成はおおまかに3部構成となっています。

1.3.1 音声認識を試すためのWebページの作成

 最初は、音声認識を試すためのWebページを作成します。ただWebサーバーをゼロから構築するのは手間がかかるので、AWSのサービスを使ってお手軽なWebページを用意します。4そのまま何も考えずに公開すると勝手に音声認識を使われてしまうので、別のAWSのサービスを使ってお手軽な認証機能5も用意します。

1.3.2 音声認識サービスの組み込み

 作成したWebページに、音声認識のサービスを組み込みます。最初はAWSの音声認識サービスであるAmazon Transcribeを組み込みますが、そこからさらに他の企業が出している音声認識も組み込んでいきます。最終的には、複数の音声認識を同時比較できるようなWebページが完成します。音声認識の機能としてはまったく意味がありませんが、どの音声認識を採用するか判断するときに役立つかもしれません。

1.3.3 総評・おかたづけ

 最後は試してみた音声認識サービスの感触について語ったり、筆者ならどう応用していくかについて語ります。筆者は音声認識に関係した仕事をしていて、そこで思いついたアイデアを取り上げてみました。もしもいいアイデアだと感じたのであれば、どうか先に実装してみてください。筆者が作る可能性はそんなに高くないので、アイデアを実現していただけるなら大歓迎です。

 また、おためし用のWebページを作りっぱなしで放置することはあんまりないと思うので、おかたづけの手順についても説明します。片付けてしまえば料金が請求される心配もありませんし、また作りたくなったら本書を読み直して同じことをするだけです。


 さて、お待たせしました。次の章から音声認識を試すために手を動かしていくことにします。

1. Google Chromeの音声認識は裏でGoogle Cloudの音声認識を使用していると思いますが、Google Cloudに直接触れているわけではないので、この一覧には含めていません。挿絵にはついGoogle Chromeのアイコンを描いてしまいましたが…

2. UDトーク(https://udtalk.jp/)というアプリがいい例です。UDトークが使われているドラマをご覧になった方もいるのではないでしょうか。

3. 簡単に応用すればと書きましたが、製品レベルにするには途方もない努力が必要となるでしょう。

4. すでにWebサーバーをお持ちでしたら、そちらを使っていただいて構いません。少しだけ手順を省略できます。

5. Webページを開くたびに必要なキー情報を入力させる方式であれば、認証機能は必要ないでしょう。しかし、デモとして見せる際にログインだけして音声認識を始められたら、かっこいいと思いませんか?

試し読みはここまでです。
この続きは、製品版でお楽しみください。