MENU

NIC BLOG

Voice of the Staff

AIモデル開発試行錯誤(音声認識)【前編】

AIモデル開発試行錯誤(音声認識)【前編】

こんにちは、NEXT事業部の Mr.K です。

今回、AI について説明を行ないます。
しかし、図や画像を使って説明したいところですが、
著作権等の関係から文字での表現となります。

また、試行錯誤を文字での表現ですると説明が長くなるため、
【前編】と【後編】に分けております。ご了承ください。

【AI(人工知能)とは】
AI そのものは、30年以上前から語られてきましたが、少し前に
ディープラーニングを使った技術が出てきたことにより、身近な存在と
なってきました。

では、AI は何ぞや!!
AI とは、過去の情報などを与えて学習させたモデルを作成し、
そのモデルに対して、今回の情報はどうか?と問い合わせることにより
確率が高い情報を出力してくれる箱です。

特にディープラーニングは、人間の脳の仕組みを参考に作られたもので
思考的には人間と同等のような判断をさせることも理論上可能です。
ただし、何を学習させるかで、結果は随分変わってしまいます。

簡単に説明しますと、人間が小学校や中学校で勉強を教わりますが、
例えば、算数や数学の先生が非常に分かりやすく、その教科が好きになると
テストの成績が上がったりします。
これと同じように、AI のモデルを作成するときに与える情報として、
算数や数学に関する情報を多く与えると、数字に関する回答率が高い
モデルが作成されます

身近な例ですと、自動車のカメラを使った、人やモノの識別AI は、
それ専用のモデルを作成しています。
また、医療界ですと、かなり分散化が進み、胃がん識別用のAIモデルや
肝臓がん識別用のAIモデルなど、それに特化したAIモデルが既に登場
しています。

反対に、なんでもかんでも適当に多量の情報を与えると、すべてに対して
回答率が高くなるわけではありません。それなりの確率の結果が出てきます。
それはモデルの大きさの問題で、ものすごい大きな容量で大きなメモリ、
高速のCPUやGPUが複数搭載されたマシンがあれば、上記のような情報でも
回答率は高くなります。
世界的には、1500億円以上のハードウェア投資を行なって、AIモデルを作成
しているメーカーも増えてきています。
Google,Amazon,Meta,OpenAI,Microsoft...なんと、LINEも参入するようで)

このように人間の脳が過去の経験や体験などにより「こっちの方がいいかなあ」
という判断と同じようなことが可能な時代になってきました。

【NICでの AIテスト開発】
今回、お客様から、音声認識のソフトウェアを組み込めないかなあ~っと相談がありました。
調査したところ、AIの技術を使えば可能であることが分かりましたが、NICでの
開発実績がないために、正式に受注せずに試行錯誤から始めて、お見せできる
段階で情報提供する方式で進めてみようということなりました。

【音声認識の基本動作】
マイクから音声を入力→デジタルデータに変換→AIモデルでローマ字化
→日本語化(漢字混じりに変換)→画面に日本語を表示

【ベース技術の選定】
ネット情報から複数選定し調査したところ、「Wav2vec2.0」という技術を用いる
ことで、開発できそうだということが分かりました。この技術は、2020年に
Facebook AI社(現在のMeta社)が発表した論文で登場しました。
特に、Transformerという技術が使われていることから、かなり話題となりました。
※Transformer は、Google社の技術

【とりあえず動かしてみる(英語版)】
開発環境としては、Linux(Ubuntu)上の、Python3(言語)を使用しサンプルを
動かしてみました。ベースのモデル(英語版)が提供されていたので、それを
基に、とりあえず動かしてみたところ、音声データ(英語)→文字データ(英語)
は意外と簡単に実現できました。とはいうものの、Linux上の各ライブラリの
バージョン不整合には悩まされました。。。(環境構築が必須

【日本語版はないのか?】
英語版はとりあえず動いたのですが、日本語版ではどうか?と調査したところ、
ある日本のソフトウェアメーカーが無償提供している Wav2vec2.0の日本語版モデル
を発見し、いろいろ試行錯誤の末、音声データ(日本語)→ローマ字データ
出力することに成功しました。

【NICモデル(日本語)に向けて学習をさせる】
とりあえず、上記で出力に成功したモデルは、あくまでも、ベースモデルの延長の
もののため、音声情報を学習させる必要があります。
学習させる基になる音声情報を集める必要が出てきました。最低でも、3万データは
必要なため、いろいろ調査し、common_voiceの日本語版(無償)を使用することに
しました。
ネットから無償ダウンロードし、ベースモデルに学習させてみました。数多くの
パラメータがありますが、とりあえずデフォルトの情報で行いました。
しかし、日本語の認識率が一向に上昇しませんでした

いろいろ調査したところ、学習させる時に基準となる数字とアルファベットの
vocabデータを統一する必要があることが分かりました。
また、ダウンロードした音声データの周波数の統一や、このデータにノイズを
少し乗せることにより、認識率が上がることが分かりました。

これらを調査するのにかなり時間が必要でしたが、なんとか、認識率を
少しずつですが上げることができるようになりました。

・・・【後編】に試行錯誤が続く。

前の投稿 >

カテゴリ

このブログはNIC社員が定期的な(?)更新を行っています。
各担当者は普段の業務の合間をぬってブログの記事を作成していますので、日付順で表示した場合にはいろいろなカテゴリがごちゃまぜで表示されます。
カテゴリ別の表示をしていただくと、ひとつの流れとして読みやすくなると思います。

月別アーカイブ