Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Making open-source text to speech sound right: ranked voices, text normalization and one engine for Python and the browser

2026年10月16日に「Dev.to」が公開したITニュース「Making open-source text to speech sound right: ranked voices, text normalization and one engine for Python and the browser」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

オープンソースのテキスト読み上げを改善する「loudness-tts」が公開された。多数の音声から最適なものを自動選択し、数字や記号を自然な言葉に正規化。音量調整や字幕タイミングも正確で、公開可能な高品質な音声出力をPythonやWebブラウザで実現する無料ツールだ。

ITニュース解説

システムエンジニアを目指す皆さんは、「テキスト音声合成(TTS)」という技術について聞いたことがあるだろうか。これは、私たちが書いた文章(テキスト)を、まるで人間が話しているかのように音声に変換する技術のことだ。近年、このTTSの技術は目覚ましい進歩を遂げ、特にオープンソース(無償で誰もが利用・改良できるソフトウェア)のモデルは、その性能が向上し、しかも非常に軽量かつ高速に動作するようになった。その代表的なモデルの一つに「Piper(パイパー)」がある。Piperの音声は、一般的なノートパソコンのCPUでもリアルタイムより速く音声を生成できるほどだ。

しかし、ただ「動く」だけでは不十分な場合が多い。「Loudness.ai」という組織が、このPiperモデルを使ってテキスト音声合成ツールを構築する際、「ただ動くだけ」の状態から「まるで本物の声のように聞こえる」状態にするまでに、いくつかの大きな課題に直面した。そして、これらの課題を解決するために開発されたのが、今回紹介する「loudness-tts」という、これもまた無償で公開されているオープンソースのツールだ。loudness-ttsは、主に三つの重要な問題に取り組み、TTSの品質を飛躍的に向上させている。

一つ目の問題は、「どの音声を選ぶか?」という点だ。Piperには170種類以上の音声ファイルがあり、中には数百人もの話者の声を含むものもある。しかし、これらの音声の品質は多種多様で、非常に自然で聞き取りやすいものもあれば、そうでないものもある。さらに、多くの音声は「商用利用不可」というライセンス条件が付いているため、ビジネス用途で利用しようとすると、利用できる音声が限られてしまうという問題があった。Loudness.aiはこの課題に対し、途方もない努力を行った。彼らは商用利用可能な1,683もの音声を一つ一つ徹底的にテストし、それぞれの音声の「自然さ」と「明瞭さ」を客観的な指標で評価したのだ。例えば、自然さの評価には「UTMOS22」という国際的な基準を用い、明瞭さの評価には、高い性能を持つ音声認識モデル「Whisper large-v3」を使って、生成された音声を文字に起こし、元のテキストとの誤り率を測るという方法をとった。その結果はすべて公開されており、誰でもそのデータを確認できる。loudness-ttsでは、これらの評価結果に基づいて、ユーザーが特定の音声を指定しなくても、言語に合わせて最適な、しかも商用利用可能な音声を自動的に選んでくれる機能が搭載されている。さらに、利用する音声のライセンス情報(例えば「この音声は誰々によるものですよ」といった表示)も明確に教えてくれるため、安心して利用できる仕組みとなっている。

二つ目の問題は、「人間が読むようにテキストを解釈する」という点だ。私たちが文章を読むとき、例えば「$5.50」とあれば「5ドル50セント」と読み、「Dr. Smith」とあれば「ドクタースミス」と読むだろう。しかし、Piperのような基本的なTTSモデルは、これらの記号や略語をそのまま文字通りに読んでしまうことがある。例えば、「$5.50」を「ドル・ファイブ・ポイント・ファイブ・ゼロ」と読んだり、「Dr. Smith」の「Dr.」を「ディー・アール」と読んでしまい、文の途中で不自然に句読点が入ったように聞こえたりするのだ。これでは、どんなに音声の品質が良くても、生成された音声が不自然で聞き取りにくいものになってしまう。loudness-ttsは、この問題を解決するために「テキスト正規化」という層を音声合成の前に挟んでいる。これは、金額、日付、時間、単位、電話番号、範囲、分数、略語、ローマ数字といった特殊な表記を、音声として自然に聞こえるような単語に自動的に変換するルール集のようなものだ。現在、このルールは英語とスペイン語に対応している。このテキスト正規化のおかげで、例えば「$5.50」は正しく「five dollars fifty cents」と読まれるようになる。さらに、loudness-ttsの優れた点として、生成された音声の各単語が、元のテキストのどの部分から来たものなのかという情報を保持していることが挙げられる。これにより、動画の字幕(SRTやVTTファイル)や、テキストが音声に合わせてハイライトされるような機能が、非常に正確に実現できるようになる。

三つ目の問題は、「公開可能な品質の音声出力」だ。生成された音声が、単に聞けるというだけでなく、ポッドキャストや動画コンテンツなどで実際に「公開」できるレベルの品質であることも重要だ。プロのコンテンツでは、音量が不適切だったり、音声の途切れ方が不自然だったりすると、視聴者に不快感を与えてしまう。loudness-ttsは、このようなプロフェッショナルな要求に応えるための工夫が凝らされている。具体的には、生成された音声の「ラウドネス(聞こえる音の大きさ)」を、ポッドキャストやビデオコンテンツで標準的に推奨されている「-16 LUFS」という値に自動的に正規化する。また、音声の一時的な最大音量を示す「トゥルーピーク」も「-1.5 dBTP」以下に抑えることで、音が割れたり歪んだりするのを防ぐ。これらの処理は、生成された音声がどんなデバイスで再生されても、快適な音量で、耳障りなく聞こえるようにするために非常に重要だ。さらに、各単語がいつ始まり、いつ終わるかという「タイミング情報」も、モデルが持つ音素(音の最小単位)の持続時間に基づいて非常に正確に生成されるため、先述の字幕ファイル(SRTやVTT)も完璧な精度で作成できる。音声と無音の間の切り替わり部分には、短いフェードイン・フェードアウト処理を施すことで、プツッというような不快なクリック音が発生しないように配慮されている。

loudness-ttsは、技術的な側面でも注目すべき点を多く持つ。一つは、「一つのエンジンで、PythonとJavaScriptの両方に対応する」という点だ。システム開発の現場では、サーバーサイドの処理にはPython、ウェブブラウザやデスクトップアプリのフロントエンドにはJavaScriptというように、異なるプログラミング言語が使われることが多い。loudness-ttsは、Python環境で簡単にインストールして使えるパッケージとして提供されるだけでなく、Pythonが利用できないNode.js、Bun、DenoといったJavaScript実行環境や、直接ウェブブラウザ上でも全く同じ品質の音声を生成できるJavaScript版も用意されている。これを実現するためには、高度な技術的挑戦が必要だった。例えば、Piperが内部で利用している音声処理ライブラリ「espeak-ng」を、「WebAssembly(ウェブアセンブリ)」という技術を使ってウェブブラウザでも動くようにコンパイルし直したり、音声モデルの実行には「onnxruntime-web」というライブラリを利用したりしている。そして、テキスト正規化のルールは、Pythonの複雑なUnicode処理の挙動をJavaScriptの正規表現で再現するための補助ツールを開発しながら、一つ一つJavaScript版に移植された。Python版とJavaScript版が全く同じ音声を出力することを保証するため、両方のエディションで8,609ものテキストケースと78種類の音声モデルを使って、厳密な同等性テスト(パリティテスト)が繰り返し行われているというから驚きだ。

このloudness-ttsは、非常に簡単に利用できる。Pythonが使える環境であれば、pip install loudness-ttsというコマンド一つでインストールでき、その後はシンプルなコマンドでテキストから音声ファイルや字幕ファイルを生成できる。さらに、ChatGPTのようなチャットアプリケーションにテキスト音声合成機能を組み込みたい開発者向けには、OpenAIのAPIと互換性のあるサーバー機能も提供されており、Open WebUI、LibreChat、AnythingLLMといったプラットフォームとの連携ガイドも充実している。もし、インストールせずに試してみたい場合は、Hugging Face Spacesというオンライン環境で、ブラウザから直接loudness-ttsの機能を体験できるデモも公開されている。もちろん、すべてのコードはGitHubで公開されており、誰でもその中身を見て、さらに改良したり、課題を報告したり、新しい機能を追加する提案(プルリクエスト)を送ったりすることが可能だ。今後は、より多くの言語へのテキスト正規化ルールの対応や、JavaScript開発者がよく使うnpmパッケージとしての提供も計画されているという。

このようにloudness-ttsは、オープンソースのテキスト音声合成モデルの潜在能力を最大限に引き出し、開発者が直面する様々な課題に対して、実用的かつ高品質なソリューションを提供している。これは、まさに「ただ動くだけ」の技術を「本当に使える」技術へと進化させる、システムエンジニアリングの粋が詰まった取り組みだと言えるだろう。

関連コンテンツ

関連IT用語

関連ITニュース