はじめに
Webサイト上に、入力した文章を音声で読み上げる機能を追加したい場合、必ずしもサーバー処理や外部APIが必要になるわけではありません。
ブラウザには、標準機能として音声読み上げに対応しているものがあります。
この機能を利用すると、ユーザーが画面上に文字を入力し、「読み上げる」ボタンを押すだけで、入力した文章を音声で再生できます。
今回作るのは、次のようなシンプルなWebツールです。
作るツールの内容
今回作るツールは、次の流れで動きます。
- ユーザーが文章を入力する
- 読み上げるボタンを押す
- ブラウザが入力文を音声で読み上げる
- 必要に応じて一時停止・再開・停止する
- 速度・高さ・音量も調整できる
外部APIを使わないため、構成はかなりシンプルです。
必要な技術
今回使う技術は、次の3つです。
| 技術 | 役割 |
|---|---|
| HTML | 入力欄、ボタン、設定項目を作る |
| CSS | 見た目を整える |
| JavaScript | 入力文を取得し、音声読み上げを実行する |
サーバー側の処理は不要です。
PHP、Node.js、データベースなども使いません。
そのため、WordPressの固定ページや投稿ページにも設置しやすい構成です。
音声読み上げに使う仕組み
今回の中心になるのは、JavaScriptの音声合成機能です。
ブラウザには、音声読み上げを行うための機能があります。
JavaScriptでは、主に次の2つを使います。
| 機能 | 内容 |
|---|---|
| speechSynthesis | 読み上げを実行する機能 |
| SpeechSynthesisUtterance | 読み上げる文章や音声設定をまとめる機能 |
イメージとしては、次のような流れです。
const utterance = new SpeechSynthesisUtterance('こんにちは');
speechSynthesis.speak(utterance);
このコードだけでも、ブラウザが対応していれば「こんにちは」と読み上げます。
フロントエンドだけで作るメリット
フロントエンドだけで作るメリットは大きく分けて4つあります。
1. サーバー費用がかからない
外部APIを使わないため、API利用料が発生しません。
音声読み上げは、ユーザーのブラウザ側で実行されます。
そのため、アクセスが増えても読み上げ処理そのものに課金されることはありません。
2. 実装がシンプル
サーバーとの通信処理が不要です。
HTML、CSS、JavaScriptだけで完結するため、構造が分かりやすくなります。
WordPressのカスタムHTMLブロックに貼り付けるだけでも動かせます。
3. 個人情報を送信しない
入力された文章を外部サーバーに送らず、ブラウザ内で処理できます。
文章の内容をサーバーに保存しない設計にしやすいため、プライバシー面でも扱いやすいです。
ただし、ブラウザや端末の仕様に依存する部分はあります。
4. お役立ちツールサイトと相性が良い
「テキスト読み上げツール」「文章読み上げツール」「日本語読み上げツール」のようなページは、検索需要があります。
シンプルな機能でも、ユーザーの目的が明確です。
お役立ちツール系のサイトに設置する機能として相性が良いです。
注意点
フロントエンドだけで実装する場合、注意点もあります。
1. ブラウザによって音声が異なる
読み上げに使える音声は、ユーザーの端末やブラウザに依存します。
同じコードでも、Windows、Mac、iPhone、Androidで音声の種類が異なる場合があります。
2. 完全に同じ読み上げにはならない
音声の高さ、速度、イントネーションは、環境によって差が出ます。
そのため、「全ユーザーに完全に同じ音声を聞かせる」用途には向いていません。
3. 長文は分割したほうが安定する
非常に長い文章を一度に読み上げると、環境によっては途中で止まる場合があります。
そのため、句点や改行などで文章を分割して読み上げる処理を入れると安定しやすくなります。
今回の完成イメージ
今回のシリーズでは、次のようなツールを作ります。
<textarea placeholder="ここに読み上げたい文章を入力してください。"></textarea>
<button>読み上げる</button>
これにCSSで見た目を整え、JavaScriptで読み上げ機能を追加します。
最終的には、次の機能を持たせます。
| 機能 | 内容 |
|---|---|
| 文章入力 | テキストエリアに文章を入力 |
| 音声読み上げ | 入力した文章を読み上げ |
| 音声選択 | 利用可能な音声を選択 |
| 速度調整 | 読み上げ速度を変更 |
| 高さ調整 | 声の高さを変更 |
| 音量調整 | 音量を変更 |
| 一時停止 | 読み上げを途中で停止 |
| 再開 | 一時停止後に再開 |
| 停止 | 読み上げを完全停止 |
| クリア | 入力欄を空にする |
まとめ
テキスト読み上げツールは、HTML・CSS・JavaScriptだけで実装できます。
外部APIやサーバー処理を使わずに作れるため、WordPressサイトや静的サイトにも導入しやすいです。
次回は、実際に画面部分を作るためのHTMLとCSSを解説します。
