見出し画像

レトロな音声認識技術in1990

はじめに

音声認識技術と言えば、今日つまり2022年時点ではもうディープラーニング技術が中心となっています。
でも、1990年代、まだ日本がなんとなく元気で企業でもそれなりに研究開発費を遣っていた頃、音声認識の研究は当然やられていました。もちろん、当時はニューラルネットワークが産声を上げはじめた頃でしかなく、ディープラーニング技術で行われるようになるのは、まだ先の話(と言っても2000年に入ってからすぐですが)でした。
さて、1990年に入社したばかりの私に音声認識の仕事が舞い込んできました。こんなやり取りがあったと思ってください。

プロジェクト依頼

(当時の)私の上長:〇〇電機から至急の業務依頼が来た。手伝って欲しいそうだ。音声認識の業務だ。
私:期間はどれくらいでしょうか?そもそも音声認識知らんのですが。
上長:3ヶ月、来年の学会発表に間に合うようにとのことだ。学会発表のために作成していたソースコードがハードウェアごとぶっ壊れたそうだ。
私:バ、バックアップは?
上長:とってないそうなんだ。
私:はいっ?ド、ド、ドキュメントみたいなのはあるんですよね?
上長:・・・(笑顔)
私:ウソでしょ?仕様書は?
上長:開発者の頭の中だそうだ。
私:開発言語は?
上長:C言語で作成されたものらしいが、この際なんでもいいそうだ。
(私とそしてコンビを組んでいた私の先輩はFORTRANしかできない。)

なんかいかにも当時の日本らしいエピソードではあるのですが、今でもこんなことってあるんでしょうか?
というわけで、年末から私と私の先輩はその電機会社の研究所にずっと張り付くことになりました。大晦日は研究所で徹夜です。これはもうブラック企業でしょうか?特に仕事以外やることなかった当時の私は実は楽しかったりして・・・

開発者との邂逅

その後、開発者の方にもお会いして、お話をしてみました・・・ていうのもまた実は大変で、そのお方、まったく話をされない方だったんです!
とても優しい人だったのですが、何を聞いても「うーん」、「えーと」ばかり。これでは一体どんな技術を使っていたのかさっぱりです。
いや、でも本当にいい人だったんです。その方、実は新婚さんで研究所の目の前に新居があったんです。プロジェクト中は奥さんに晩御飯をご馳走になったこともありました。
(あのおとなしさでどうやって奥さんを口説いたのかと思ったら、やはりお見合いだったそうな。なんか便利なシステムですね、お見合いって。今でもあるのかしら?)
さて、この状態ではどこから手をつければいいものかと悩んでいたところ、コンビの先輩がなんとある日「わかった」と言ってきたんです。どうも個人的に開発者に話をしてなんとか理解した、というのです。
いやあ、あれには正直びっくりしましたわ。開発者とその先輩、波長があったのでしょうか?とてもそうは見えなかったのですが・・・
というわけで、ここからが本題です。当時の音声認識技術とは、どんなものだったのでしょう。

音声認識?、音韻認識?

私は、この業務(つまり消えたコード復活業務)を「音声認識」であると認識していましたが、研究所でまず言われたのは、これは「音韻認識」である、とのことでした。どちらでも良かったので、その時の私は何も考えずに業務を遂行していました。
今、改めて「音韻認識」について調べてみると、どうも幼児が言葉を覚えるときに音から文字へと操作するその過程のようですね。当時、その意味で使っていたのかどうかは不明ではあるのですが、でも下のリンクにあるように一つの音には一つの文字が対応する、ことを計算機(つまりコンピューターですが)でやらせることが目的ではありました。

今ではもう「音声認識」でいいかと思います。
計算機による「音声認識」のイメージを簡単に示すとこんな感じです。


音声認識

実際のシステムは以下のような二つの部分から構成されています。音声を認識して文字に変換するシステムと、文字から全体の文章へと変換する辞書の部分です。

音声認識システム全体像

その開発者は、このシステム全体を一人でつくっちゃったんですよ。改めて考えると凄くないですか?
なので、システム消えたら何も残らなかったということになっちゃったわけなのですが。
私とコンビの先輩が担当したのはこのシステムの「音声認識」の部分だけです。二人ともFORTRANしかできなかったので、FORTRANで開発しました。
残りの「辞書」については、同じチームにいた女性プログラマーが対応しました。開発言語は恐らくLISPだったと思います。その女性プログラマーは、ほとんどの開発言語を使うことができました。これも凄いことですが。
というわけで、私は「辞書」がどうなっているのかよく知らないのです。ここでは、「音声認識」をどう行なっていたかについての紹介となります。

動的計画法(ダイナミック・プログラミング)

音声認識の考え方はそれほど難しくはなく、入力された音声の波形データと予め集めた標準的な音声の波形データを比較して、マッチするものを見つけるのです。このマッチングはダイナミック・プログラミング(DP:Dynamic Programming)という数学的手法で行います。


音声認識の方法

音声認識でダイナミック・プログラミングを使うのは一般的です。以下のような感じで、入力波形を小さなフーリエ変換(メル・ケプストラム)して、入力された音声波形と標準の音声波形を比較します。比較とは誤差をとることで、全体の誤差が最小になるものがマッチした音声となります。これでマッチした標準波形に対応する文字が、入力波形が言っている言葉と推測されます。(入力パターン、標準パターンは、音声波形をメル・ケプストラム変換したものです。)

ダイナミック・プログラミング

さて、ここで一工夫しています。例えば、「わ・た・し・は・て・ん・ね・ん・で・す」という言葉の中の「し」という語は前の言葉の「た」と後ろの語の「は」の影響を受けたものになります。
従って「し」の音声波形は、「た」と「は」の音声波形が混ざっている可能性があります。私たちが開発したダイナミック・プログラミングはこれを考慮したものになっています。
面倒なのは、「わ・た」まできてマッチングする際「た」の後に続く言葉を選ぶ際にその次の語も考慮する必要があるということです。この際、全ての語を対象としなければならないので、大変な計算時間がかかるのです。

音声認識をする時には前後の語の影響を考慮する

この計算はとても時間がかかるので実際には使えないのではないか?と当時の上長に聞いたことがあります。最終的には「チップに焼く」のだそうです。

おわりに

こんな感じで波乱のうちに幕を開けた私の「音声認識プロジェクト」ですが、なんとか年をあけての3月には大体できるようになったと記憶しています。とにかく認識がなかなかうまくいかず、とても苦労しました。
学会発表は無事できたようですが、恐らく完全なものではなかったのではないでしょうか。いくらなんでもあのシステムをたった3ヶ月でゼロから開発するのは当時は無理筋以外の何ものでもなかったと思います。

その後の音声認識技術について補足

音声認識は現在ではディープラーニングというAI技術の一つで行われることが一般的になりました。
ディープラーニングのブレークスルーは、2012年画像認識の分野で起きたとされるのが一般的ですが、実際には音声認識の分野で既に起きていたのです。
2012年の画像認識のブレークスルーも音声認識でのブレークスルーもディープラーニングの父と言われるジェフリー・ヒントン教授の関与したものとなります。

参考文献


この記事が気に入ったらサポートをしてみませんか?