筆者が子供の頃に映画やアニメでみた未来のコンピューターはみんなしゃべっていた。なのでコンピューターとはしゃべるものかと思っていたが、実際には、プリンターに文字が出るだけだった。その後、個人でも購入できるコンピューターであるマイクロプロセッサを手に入れたが、ウンともスンとも言わない。部品を集めてコンピュータにして画面に文字を出させるだけで1年かかった。
コンピューターから人の声を出すことを「音声合成」という。人の声の波形は複雑で楽器音のように簡単に作るわけにはいかなかった。なので、8 bitのマイクロプロセッサの時代は、ハードウェアを使わないと音声合成を行うことはできなかった。16 bitのマイクロプロセッサが普及して、ソフトウェアだけでコンピュータに声を出させることが可能になった。しかし、テキストを人間のように、しゃべらせるにはもう少し時間がかかった。Windowsに言葉を話す機能(Speech API)が搭載されたのは、Windows 95/Windows NT 3.51の頃である。基本的な完成をみたのは2006年のWindows Vistaから。以後、音声合成と音声認識が標準で搭載されるようになった。
自然言語のテキストを喋らせることを「Text To Speech」、略してTTSという。TTSを実現するには、単語を正確に発音させる必要がある。自然言語の単語は、必ずしも「綴り」通りに発音するとはかぎらないため、発音辞書が必要になる。そのほか、数字や日付の読み方などを自然にしなければならない。「1」ならば「イチ」だが、「123」の場合には、「ヒャク」と読まねばならない。日付ならば「ツイタチ」と読まねばならない。TTSでは、人の声を合成するだけでなく、テキストの読み方のルールまでをコンピュータに理解させる必要がある。
Windowsの音声合成機能は、デスクトップアプリ用にWin32APIと.NET FrameworkにAPIがあり、別にUWPアプリ用(WinRT)のAPIもある。機能を見るかぎり、Win32APIのSAPIがベースになっているようだ。なお、TTSは、Android(ユーザー補助)、ChromeOS(ユーザー補助機能)にもあり、Webやメールの読み上げが可能だ。
Windowsでは、標準で搭載されているWindows PowerShellから直接TTSを使うことができる。まずは、準備として以下の2行を実行する。
Add-Type -AssemblyName System.speech
$ssynth = New-Object System.Speech.Synthesis.SpeechSynthesizer
その後は、以下のようなコマンドでWindowsがしゃべる。以下“$ssynth”で始まる実行例は、この2行が実行してあることが前提のWindows PowerShellのコマンドだ。PowerShell 7でも上記の方法でSpeechSynthesizerオブジェクトを使うことはできるのだが、.NET Frameworkのオブジェクトを呼び出すためにオーバヘッドが大きく、一回目は無音になることがある(複数回実行すると音が出る)。なのでここはWindows PowerShellを使っていただきたい。
$ssynth.Speak('こんばんは')
表01は、SpeechSynthesizerのメソッドとプロパティである。
日本語版のWindows 10/11なら「Haruka」と呼ばれている女性の「声」(音声データ)がインストールされている。利用可能な「声」は、以下のコマンドで表示させることができる。
$ssynth.GetInstalledVoices().VoiceInfo | select Name,Description
英語の言語パックをインストールすれば、Ziraと呼ばれる英語の「声」がインストールされるはずだ。「声」を切り替えることもできる。以下のコマンドで、英語のZiraの声を選択できる。
$ssynth.SelectVoice("Microsoft Zira Desktop")
日本語のHarukaの声に戻したい場合には、
$ssynth.SelectVoice("Microsoft Haruka Desktop")
とする。
Ziraを選択すると英単語の発音が可能になる。
$ssynth.SelectVoice("Microsoft Zira Desktop");
$ssynth.Speak('This is a pen.');
TTSは、必ずしも正しい文章でなくてもよい。Ziraなら、以下のコマンドでは、外人風の発音でしゃべってくれる。
$ssynth.Speak('chop toe, eat deth,car ?');
現在のWindowsは、話すこともできるし、人の声を認識することもできる。とはいえ、SF映画のようにコンピューターと会話しながら仕事を進めることはまだできない。しかし、取りあえず喋らせることは、そんなに難しくない。
今回のタイトルネタは、バラードの短編集“The voice of time”(邦題「時の声」。創元推理文庫)である。バラードは、いくつかの作品が映画にもなっているので、御存じの方もいるかもしれない。ただ、その魅力に取り憑かれる人とそうでない人がはっきり分かれる作家。未読であれば、まずは短編で雰囲気を感じるのがいいんじゃないかと思う。まずは、この本か「時間都市」(東京創元社)あたりから。