语音控制,通义灵码,如何在网页中插入语音控制

要在网页中添加语音控制功能,你可以使用 Web Speech API,它提供了两个主要接口:SpeechRecognitionSpeechSynthesisSpeechRecognition 用于语音识别,即从用户的语音输入中提取文本;SpeechSynthesis 用于语音合成,即将文本转换成语音输出。

下面是一个简单的示例,展示如何使用 SpeechRecognition API 来实现基本的语音识别功能。在这个例子中,我们将创建一个按钮,用户点击后可以开始录音,然后将识别到的文本显示在页面上。

HTML 结构

首先,我们需要创建一些基本的 HTML 元素来展示结果和触发录音功能。

 

html

深色版本

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>语音识别示例</title>
7    <style>
8        body {
9            font-family: Arial, sans-serif;
10            text-align: center;
11        }
12    </style>
13</head>
14<body>
15    <h1>语音识别示例</h1>
16    <p>点击按钮开始录音,说出你要说的话。</p>
17    <button id="start-recognition">开始录音</button>
18    <p id="transcribed-text">识别结果将会显示在这里...</p>
19
20    <script src="speech-recognition.js"></script>
21</body>
22</html>

JavaScript 代码

接下来,我们需要编写 JavaScript 代码来处理录音和语音识别。

创建一个名为 speech-recognition.js 的文件,并添加以下代码:

 

javascript

深色版本

1// 获取 DOM 元素
2const startButton = document.getElementById('start-recognition');
3const transcribedText = document.getElementById('transcribed-text');
4
5// 创建 SpeechRecognition 对象
6const recognition = new webkitSpeechRecognition();
7recognition.lang = 'zh-CN'; // 设置语言为中文
8recognition.interimResults = true; // 启用中间结果
9
10// 添加事件监听器
11recognition.addEventListener('result', (event) => {
12    const transcript = Array.from(event.results)
13        .map(result => result[0])
14        .map(result => result.transcript)
15        .join('');
16
17    transcribedText.textContent = transcript;
18});
19
20// 开始录音
21startButton.addEventListener('click', () => {
22    if (recognition.start) {
23        recognition.start();
24    } else {
25        console.error('SpeechRecognition API not supported.');
26    }
27});
28
29// 结束录音
30window.addEventListener('keydown', (event) => {
31    if (event.key === 'Escape') {
32        recognition.stop();
33    }
34});

注意事项

  • 浏览器支持:Web Speech API 在不同的浏览器中的支持程度不同。例如,webkitSpeechRecognition 是 WebKit 浏览器(如 Chrome 和 Safari)中的实现。在 Firefox 和其他非 WebKit 浏览器中,你需要使用 SpeechRecognition 而不是 webkitSpeechRecognition
  • 权限请求:在某些浏览器中,使用语音识别功能需要用户的明确许可。确保你的网站是在 HTTPS 下运行的,因为大多数现代浏览器要求使用 HTTPS 才能使用此 API。
  • 兼容性:确保检查浏览器对 Web Speech API 的支持情况,并提供备选方案。

如何使用

  1. 将上述 HTML 文件保存为 index.html
  2. 将 JavaScript 文件保存为 speech-recognition.js
  3. 确保这两个文件位于同一个目录中。
  4. 使用支持 Web Speech API 的浏览器打开 HTML 文件。

当你点击 "开始录音" 按钮时,浏览器会请求访问麦克风的权限。一旦获得权限,你就可以开始说话,识别到的文本会显示在页面上。

这是一个非常基础的例子,你可以根据需要扩展功能,比如添加停止按钮、调整识别语言、处理不同的结果状态等。如果你需要更高级的功能,还可以考虑使用第三方库或服务,例如 Google Cloud Speech-to-Text API。

如何让语音能够一直开着

要让语音识别功能持续开启,直到用户主动关闭,你可以稍微调整之前的示例代码。在这个版本中,我们将添加一个“停止录音”按钮,并且在用户点击“开始录音”按钮后,语音识别将持续运行,直到用户点击“停止录音”按钮。

HTML 结构

在 HTML 文件中添加一个“停止录音”按钮,并做一些其他小的调整:

 

html

深色版本

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>持续语音识别示例</title>
7    <style>
8        body {
9            font-family: Arial, sans-serif;
10            text-align: center;
11        }
12    </style>
13</head>
14<body>
15    <h1>持续语音识别示例</h1>
16    <p>点击按钮开始录音,说出你要说的话。</p>
17    <button id="start-recognition">开始录音</button>
18    <button id="stop-recognition" disabled>停止录音</button>
19    <p id="transcribed-text">识别结果将会显示在这里...</p>
20
21    <script src="speech-recognition.js"></script>
22</body>
23</html>

JavaScript 代码

接下来,我们需要修改 JavaScript 代码以实现持续录音功能。

创建一个名为 speech-recognition.js 的文件,并添加以下代码:

 

javascript

深色版本

1// 获取 DOM 元素
2const startButton = document.getElementById('start-recognition');
3const stopButton = document.getElementById('stop-recognition');
4const transcribedText = document.getElementById('transcribed-text');
5
6// 创建 SpeechRecognition 对象
7const recognition = new webkitSpeechRecognition();
8recognition.lang = 'zh-CN'; // 设置语言为中文
9recognition.interimResults = true; // 启用中间结果
10recognition.continuous = true; // 设置为持续识别模式
11
12// 添加事件监听器
13recognition.addEventListener('result', (event) => {
14    const transcript = Array.from(event.results)
15        .map(result => result[0])
16        .map(result => result.transcript)
17        .join('');
18
19    transcribedText.textContent = transcript;
20});
21
22recognition.addEventListener('end', () => {
23    // 如果语音识别结束,重新启动它
24    if (!stopButton.disabled) {
25        recognition.start();
26    }
27});
28
29// 开始录音
30startButton.addEventListener('click', () => {
31    if (recognition.start) {
32        recognition.start();
33        startButton.disabled = true;
34        stopButton.disabled = false;
35    } else {
36        console.error('SpeechRecognition API not supported.');
37    }
38});
39
40// 结束录音
41stopButton.addEventListener('click', () => {
42    recognition.stop();
43    startButton.disabled = false;
44    stopButton.disabled = true;
45});
46
47// 键盘快捷键
48window.addEventListener('keydown', (event) => {
49    if (event.key === 'Escape') {
50        recognition.stop();
51        startButton.disabled = false;
52        stopButton.disabled = true;
53    }
54});

注意事项

  • 连续识别:通过设置 recognition.continuous = true;,我们可以让语音识别持续运行,直到用户主动停止。
  • 事件处理:我们添加了一个 end 事件监听器,当语音识别结束时重新启动它,除非用户已经点击了“停止录音”按钮。
  • 权限请求:在某些浏览器中,使用语音识别功能需要用户的明确许可。确保你的网站是在 HTTPS 下运行的,因为大多数现代浏览器要求使用 HTTPS 才能使用此 API。
  • 浏览器支持:确保检查浏览器对 Web Speech API 的支持情况,并提供备选方案。

如何使用

  1. 将上述 HTML 文件保存为 index.html
  2. 将 JavaScript 文件保存为 speech-recognition.js
  3. 确保这两个文件位于同一个目录中。
  4. 使用支持 Web Speech API 的浏览器打开 HTML 文件。

当你点击 "开始录音" 按钮时,浏览器会请求访问麦克风的权限。一旦获得权限,语音识别将持续运行,直到你点击 “停止录音” 按钮。识别到的文本会实时显示在页面上。

这是一个持续语音识别的基础示例。你可以根据需要扩展功能,比如添加更多的交互元素、处理不同的结果状态等。

11-24 194
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值