ブラウザをJavaScriptで対話させる方法

ブラウザをJavaScriptで対話させる方法

1. 最も単純な例

言いたい単語やフレーズを受け取ってブラウザに読み上げさせる基本的な関数を作成しましょう。ほとんどの最新ブラウザで利用可能なネイティブの speechSyntehsis API を利用します。

関数speak(文){
    const utterance = 新しい SpeechSynthesisUtterance(sentence)
    window.speechSynthesis.speak(発話)
}

//テスト
話す('hello world');

信じられないかもしれませんが、ほとんどのブラウザに文章を読み上げさせるには、上記のコードだけが必要です。ここで何が起こっているのか見てみましょう。

単語をパラメータとして受け取るspeak()関数を作成しました。サウンド オブジェクトを作成します。これは実際には、何を言うか、どのように言うかに関するすべてのデータを含む言語要求オブジェクトです。

2. 音声の速度とピッチをカスタマイズする

もう少し複雑な例を作って、話される言葉の速度とピッチを変更してみましょう。

/**
 * @param sentence: 発音する文 * @param pitch: ピッチ、値の範囲 (0 - 2) デフォルト値: 1
 * @param rate: 発話速度、値の範囲 (0.1 - 10) デフォルト値: 1
 */
関数speak(文, ピッチ, 速度) {
    const utterance = 新しい SpeechSynthesisUtterance(sentence)

    発話率 = 率
    utterance.pitch = ピッチ

    window.speechSynthesis.speak(発話)
}

上記の例では、元の関数に基づいて、ピッチと話す速度の 2 つのパラメーターを追加しました。サウンド オブジェクトを作成した後、サウンド オブジェクトの特定のプロパティを直接変更できます。ただし、現時点ではコンストラクターまたはセッター メソッドを通じて変更することはできません。

pitch は 0 から 2 までの範囲の浮動小数点数で、デフォルト値は 1 です。この値の効果は、エンジンやサウンドによって制限される場合があります。

rate は 0.1 から 10 までの範囲の浮動小数点数で、デフォルト値は 1 です。

ここで、上記のコードを簡単な文章で呼び出すと、ブラウザは通常の発話速度とトーンで次のように話します。

話す('Hello world', 1, 1)

3. 音量の調整方法

ピッチやテンポを調整するのと同じように、音量も調整できます。その方法を簡単に見てみましょう。

/**
 * @param sentence: 発音する文 * @param volume: 音量、値の範囲 (0 - 1) デフォルト値: 0.5
 */
関数speak(文, 音量) {
    const utterance = 新しい SpeechSynthesisUtterance(sentence)

    発話.音量 = 音量

    window.speechSynthesis.speak(発話)
}

前のコードを変更して、ボリューム パラメータを渡します。音量も 0 から 1 までの浮動小数点数で、デフォルト値は 0.5 です。

同様に、現在のところ、コンストラクターまたはセッター メソッドを介してボリュームを設定する方法はありません。これで、必要な文と音量をこの関数に渡し、希望する結果を聞くことができます。

4. よく使われる機能

speechSynthesis オブジェクトには、役に立つ関数がいくつかあります。言語の学習の進行を一時停止、再開、またはキャンセルすることもできます。簡単に見てみましょう:

const utterance = new SpeechSynthesisUtterance('Hello world');
window.speechSynthesis.speak(発話);

// 一時停止 window.speechSynthesis.pause();
// 再開 window.speechSynthesis.resume();
// キャンセル window.speechSynthesis.cancel();

上記のコードは必要な文章を読み上げ、音声は一時停止、再開され、最後にキャンセルされます。上記のコードをブラウザで試すこともできます。

また、speechSynthesis オブジェクトの paused プロパティを通じてオーディオが一時停止されているかどうかを直接判断することもできます。このプロパティは、オーディオが一時停止されているかどうかを示すブール値を返します。

window.speechSynthesis.paused // ブール値

まだ読んでいない文章が残っている場合はどうすればよいでしょうか?また、pending というプロパティもあり、これは発話待ちの音声があるかどうかを確認するために使用されます。処理が保留中の音声があるかどうかを示すブール値を返します。

const utterThis = new SpeechSynthesisUtterance('Hello world');
const utterThat = new SpeechSynthesisUtterance('Hello JavaScript');

window.speechSynthesis.speak(utterThis);
window.speechSynthesis.speak(utterThat);
ウィンドウの音声合成が保留中。

上記のコードを実行すると、2 つの音声クリップがキューに入れられ、順番に再生されます。 pending プロパティを取得すると、再生を待機している 2 番目の音声があるため、この値は true を返します。

注: 音声が 1 つしかない場合は、再生する音声がキューに登録されていないため、pending プロパティは常に false を返します。

5. イベント監視

SpeechSynthesisUtteranceapi を使用すると、いくつかの便利なイベントをリッスンできます。一緒に見てみましょう:

const utterance = new SpeechSynthesisUtterance('Hello world')

utterance.addEventListener('start', () => console.log('発話の開始'))
utterance.addEventListener('pause', () => console.log('発話が一時停止されました'))
utterance.addEventListener('resume', () => console.log('発話が再開されました'))
utterance.addEventListener('end', () => console.log('発話終了'))

window.speechSynthesis.speak(発話)

6. 結論

この記事が、ブラウザで合成音声を使い始めるのに十分であることを願っています。これで、スピーチを開始、停止、一時停止する方法と、スピーチの速度、ピッチ、音量を調整する方法がわかりました。

上記は、JavaScript を使用してブラウザに音声を発声させる方法の詳細です。JavaScript の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • JS を使用して Web ページ上のテキストを読み上げる方法の詳細な説明
  • jsはWeChatの音声再生実装のアイデアを模倣します
  • 音声認識にJavaScriptを使用する方法の簡単な分析
  • Node.js を使用してビープ音(システムアラーム音)を作成する方法
  • JSウェブページのサウンド再生コードはさまざまなブラウザと互換性があります
  • Javascript でマウスが通過したときにサウンドを再生する

<<:  Linuxシステムはポート3306、8080などを外部に開放します。ファイアウォール設定の詳しい説明

>>:  Mysql通信プロトコルの詳細な説明

推薦する

Docker ベースの ELK ログ システムを構築する方法

背景要件:ビジネスがどんどん大きくなると、サーバーの数も増え、さまざまなアクセスログ、アプリケーショ...

要素UIテーブルはドロップダウンフィルタリング機能を実現します

この記事の例では、要素UIテーブルにドロップダウンフィルタリングを実装するための具体的なコードを参考...

Docker.v19 で Docker Compose オーケストレーション ツールをインストールして構成する方法

1. Compose の紹介Compose は、マルチコンテナ Docker アプリケーションを定義...

WEB中国語フォントアプリケーションガイド

Web 上でフォントを使用することは、基本的なスキルであると同時に芸術でもあります。英語のフォントに...

Linux でのスケジュールされたタスクと遅延タスクの詳細な説明

で+ 時間 17:23に at> touch /mnt/file{1..9} ##アクションを...

GobangゲームのWebバージョンを実装するためのJavaScript

この記事では、GobangゲームのWebバージョンを実装するためのJavaScriptの具体的なコー...

Vue 開発者向けの VSCode 拡張機能ベスト 7

適切な VS Code 拡張機能を Visual Studio に追加すると、開発者としての作業がは...

MYSQL(電話番号、IDカード)データ非感応化の実装

1. データ感度低下の説明日常の開発ニーズでは、データの感度低下が頻繁に発生します。たとえば、ID ...

JavaScript での AOP プログラミングの基本実装

AOP の紹介AOP (アスペクト指向プログラミング) の主な機能は、コアビジネスロジックモジュール...

win10 での mysql5.7.21 の詳細なインストール手順

この記事では、MySQL 5.7.21のインストールとインストール中に発生した問題を参考までに紹介し...

Nginx イントラネット スタンドアロン リバース プロキシの実装

目次1 Nginxのインストール2 Nginxの設定3 ホストファイルを変更する4 テストNginx...

Linux で同じ内容のファイルを識別する方法の詳細な説明

序文ファイルのコピーによってハードドライブのスペースが大量に浪費され、ファイルを更新するときに混乱が...

MySQLのグループカウントと範囲集計を実装する2つの方法

1つ目:通常動作 選択 SUM(ddd) AS count_days、 場合 aa.days >...

vue cli3は環境ごとにパッケージ化の手順を実装します

cli3 でビルドされた vue プロジェクトは、ゼロ構成ファイルとして知られています。パッケージ化...