標準ボイスとロボットの違い
本ツールでは,入力されたテキストを音声として確認するための「標準ボイス」と,ファイルとして書き出すための「ロボットボイス」という2つの全く異なる音声合成エンジンを搭載しています.まず標準ボイスは,ご利用のOSやブラウザに組み込まれている「Web Speech API」の機能をそのまま呼び出す仕組みです.
こちらは環境が提供する音声エンジンで読み上げますが,声や発音の品質は環境に依存し,このAPIの仕様により音声を直接ファイルとして取り出すことはできません.プレビュー専用の機能として位置づけています.
一方,ロボットボイスは,書き出しを行うためにブラウザの「Web Audio API」を用いて本ツールが独自に波形を生成するモードです.こちらは入力された文字の母音や子音の周波数特性(フォルマント)をオシレーターやフィルターといった音響ノードを組み合わせて簡易的に近似し,電子的なシンセサイザー音として出力します.
そのため,保存される音声はプレビュー時の標準ボイスとは全く異なる,機械的でレトロなロボット風の音色となります.合成モードを「ロボットボイス」に切り替えた場合でも,プレビューボタンを押した際の再生には常に標準ボイスが使用されるため,実際にファイルとして書き出される音色とは一致しない点に十分ご留意ください.
入力文字と漢字の扱い
テキストエリアに入力された文字列がどのように処理され,音声化されるかは,選択している合成エンジンによって大きく異なります.入力はrawテキストで2000文字までとなっており,2000文字を超える長文は標準ボイスのプレビューでも拒否されます.またロボットボイスの生成には推定時間60秒以下という制限が適用されます.
標準ボイスでプレビューを行う場合,OS側の音声合成エンジンが漢字の読みや文脈をある程度解釈し,自然なイントネーションで読み上げるように処理します.しかし,実際の音声ファイルとして書き出しを行うロボットボイスモードでは,文字の解釈プロセスが極めて限定的です.
ロボットボイスの簡易合成処理は,入力されたテキストの中から「半角英数字」「半角・全角の空白」「ひらがな」「カタカナ」のみを対象として音素を割り当てます.漢字やそれ以外の特殊記号などが含まれている場合,これらは合成処理の直前に正規化のプロセスで文字列から完全に除去されます.
その結果,漢字は発音の対象から取り除かれ,前後にあるひらがなやカタカナだけが繋がって発音されることになります.したがって,ロボットボイスでのエクスポートを目的とする場合は,あらかじめテキスト内の漢字をご自身でひらがなまたはカタカナに変換していただく必要があります.
本ツールは正確な日本語の発音やアクセントを自動で補正・保証する機能は持っておらず,入力された対象文字に1対1で機械的に音を割り当てる仕様となっています.
ピッチと速度
本ツールには,生成される音声の音響特性を調整するためのパラメータとして,ピッチ(音程)とスピード(話速)の2つのスライダーが用意されています.どちらの設定値も,初期状態の1.0を基準として,最小0.5から最大2.0までの範囲を0.1刻みで指定することが可能です.
ピッチの調整では,標準ボイスにおいては声の高さやトーンが変化し,ロボットボイスにおいては合成される波形の基本周波数(ベースとなるオシレーターの周波数)が直接的にスケールされます.ピッチを高く設定すればより甲高い電子音に,低く設定すれば重みのある低い機械音に変化します.スピードの調整は,発話のテンポを制御します.数値を大きくするほど1文字あたりの発音時間が短縮され,早口の音声となります.
これらのパラメータ変更は,標準ボイスのプレビュー再生時と,ロボットボイスの録音・書き出し処理時の両方に適用されます.ただし,標準ボイスはOSのエンジンによってピッチや速度の変化に対する追従性や限界値が異なる場合があり,設定した数値がリニアに反映されないこともあります.
対してロボットボイスは,指定されたパラメータを基にミリ秒単位で発音長と周波数を算出し,オーディオコンテキスト上で正確なタイミングに合わせて波形を生成し再生します.
プレビューの環境依存
本ツールにおける「標準ボイス」を用いたプレビュー再生機能は,その品質や挙動がユーザーの実行環境(OSの種類,バージョン,使用しているブラウザ等)に強く依存するという性質を持っています.ツール側では,ブラウザが認識した音声リストの中から「ja(日本語)」または「en(英語)」から始まる言語コードを持つ音声を抽出し,選択肢として提供しています.
Windows,macOS,iOS,Androidなど,プラットフォームごとに内蔵されているデフォルトの音声モデルは異なり,さらにサードパーティ製の拡張機能や追加インストールされた音声パッケージが存在する場合は,それらもリストに含まれることがあります.一部の環境において提供されている音声モデルの中には,ブラウザのローカル処理だけでなく,より高品質な読み上げを行うためにOSやブラウザの設定に従ってクラウド上の外部サービスへテキストデータを送信し,合成された音声を取得して再生するタイプ(localServiceフラグがfalseのもの)が含まれている可能性があります.
したがって,プレビュー再生に入力したテキストがどのように取り扱われるかは,選択した音声モデルの内部仕様に委ねられます.入力対象のテキストからオーディオデータを生成する指示はブラウザ内で行われますが,プレビュー機能を利用する際は,ご利用の環境や選択した音声エンジンの特性をご自身で確認した上でご使用ください.
ロボットの録音とWAV条件
ロボットボイスモードで「音声ファイルを生成」ボタンを実行すると,ブラウザ内でMediaRecorder APIを用いた実時間での録音プロセスが開始されます.処理中はbusyフラグと世代管理により二重開始や古い更新が抑制され,テキスト入力,音声種別,ピッチ,レートの設定が固定されます.
マイクなどの外部入力デバイス(getUserMedia)は一切使用せず,Web Audio API上でテキストからリアルタイムに生成されるシンセサイザーの波形出力を内部ストリームとしてキャプチャし,録音時にはスピーカーへの再生も接続されます.録音処理は,入力文字数とスピードから算出される発話時間に約0.4秒の余裕を持たせた期間継続されます.
録音が終了するとトラックが停止し,finally処理でAudioContextがクローズされます.エラーや空チャンク,stopイベントの不発が発生した場合でも,約10秒の追加ウォッチドッグタイマーによって最終的に終了処理へ導かれます(ただしすべてのブラウザ環境での動作を保証するものではありません).
成功した録音結果のBlob URLは直後に解放されるのではなく,再生や保存のために保持され,次回の生成による置換やコンポーネントのアンマウント時に解放されます.録音後のデコードが失敗するか,または5秒以内に完了しなかった場合は,16bit PCMのWAV変換を行わず元の録音形式(WebMやMP4等)へフォールバックします.
書き出される音声ファイルの最終的なフォーマットは,処理の成功状況によって分岐します.録音が完了すると,まずキャプチャされたメディアデータ(通常はブラウザに依存するWebMやMP4形式)をオーディオコンテキスト上で再デコードする試みが行われます.このデコード処理が無事に成功した場合,抽出された生のオーディオバッファを基に,より幅広いアプリケーションで再生可能な「16ビット非圧縮WAV形式」のバイナリデータへと変換し,出力サイズを計算した上でエクスポートします.
一方で,特定の環境下においてデコード処理に失敗した場合は,エラーとして処理を中断するのではなくフォールバック機構が働き,MediaRecorderが生成したWebMやMP4などの録音データをそのままの形式で保存用ファイルとして提供する仕様となっています.
利用前の確認と音声データ取扱い
本ツールをご利用いただくにあたり,入力テキストおよび生成される音声データの取り扱いに関する技術的なプロセスを正しくご理解ください.本システムは,ブラウザに実装されている標準的なWeb API(SpeechSynthesis,Web Audio,MediaRecorderなど)を活用し,フロントエンドのJavaScript処理のみで機能を実現しています.
ロボットボイスによるファイルの書き出し処理において,入力された文字列を母音・子音の周波数パラメータへマッピングし,波形として構築する一連の計算作業は,すべて現在開いているブラウザのメモリ領域内で完結して実行されます.ツール側から特定のデータベースへテキストや録音済みデータを送信して保存するような仕組みは組み込まれていません.
ただし,Webページの動作に必要なリソースの取得時など,サイトを利用する上での一般的なHTTPリクエストに伴ってCookie等の情報が付随して送受信される可能性は存在します.
また,第4章で言及した通り,標準ボイスのプレビュー機能では環境によって外部の処理を伴う音声モデルが選択される余地があるため,どのようなデータ通信が発生するかは利用環境に依存します.各機能の動作範囲とブラウザが提供する処理の境界を明確に区別し,意図した通りのフォーマットや文字の制約(漢字が省かれる点など)をご確認いただいた上でエクスポート機能をご活用ください.