JavaScript 实现文本转语音功能

全篇大概2000 字(含代码),建议阅读时间10分钟。

引言

     我将向大家展示如何使用 JavaScript 和 Web Speech API 快速实现一个“文本转语音”的 Web 应用。通过这个教程,你将了解如何让浏览器将输入的文本朗读出来。

预览效果 

一、需求

我们将构建一个简单的网页应用,用户只需要在文本框中输入想要朗读的文字,然后点击按钮即可播放语音。

1.文本框

2.按钮

二、实现步骤

2.1 项目准备 

创建前端工程,项目名称自拟。

2.2 HTML结构

首先,我们需要定义一个基本的 HTML 页面。这个页面将包含:

一个文本输入区域(textarea)、一个按钮(button),用于触发语音播放。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文本转换为语音</title>
    <link rel="stylesheet" href="styles.css"> <!-- 引入样式表 -->
</head>
<body>
    <!-- 主容器 -->
    <div class="container">
        <h1>文本转语音</h1>
        <!-- 文本输入框 -->
        <textarea id="textToRead" placeholder="输入文本"></textarea><br>
        <!-- 播放按钮 -->
        <button onclick="speakText()">播放语音</button>
    </div>
    <!-- 引入 JavaScript 文件 -->
    <script src="script.js"></script>
</body>
</html>

2.3 JavaScript逻辑

接下来,我们需要为文本转语音功能编写 JavaScript 代码。使用 Web Speech API 中的 SpeechSynthesis 接口来实现语音播放。

function speakText() {
    // 获取文本输入框的内容
    const text = document.getElementById('textToRead').value;
    if (text.trim() === '') return; // 如果文本为空,则不执行
    const utterance = new SpeechSynthesisUtterance(text); // 创建语音合成实例
    utterance.lang = 'zh-CN'; // 设置语言为中文
    utterance.volume = 1;      // 设置音量(0 到 1)
    utterance.rate = 1;        // 设置语速(0.1 到 10)
    utterance.pitch = 1;       // 设置音调(0 到 2)
    window.speechSynthesis.speak(utterance); // 播放语音
}

2.4 CSS样式

body {
    font-family: Arial, sans-serif;
    background-color: #f3f4f6;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}

.container {
    background-color: #ffffff;
    padding: 30px;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    text-align: center;
}

h1 {
    color: #333;
    margin-bottom: 20px;
}

textarea {
    width: 100%;
    height: 100px;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    resize: none;
    font-size: 16px;
}

button {
    margin-top: 15px;
    padding: 10px 20px;
    background-color: #007bff;
    color: #fff;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 16px;
    transition: background-color 0.3s ease;
}

button:hover {
    background-color: #0056b3;
}

三、测试

现在,我们已经完成了所有代码的编写。将 index.htmlscript.jsstyles.css 文件保存在同一目录下,打开 index.html 即可在浏览器中测试这个文本转语音功能。

1. 在文本框中输入想要朗读的文字。
2. 点击 “播放语音” 按钮,浏览器将朗读输入的文字内容。

四、总结

通过这篇教程,我们使用 HTML、CSS 和 JavaScript 构建了一个简单的文本转语音应用。该项目不仅展示了 Web Speech API 的强大功能,同时也展示了如何将前端技术结合起来实现有趣的功能。

希望这篇文章对你有所帮助,如果有任何问题或改进建议,欢迎在评论区留言!

相关文章

你从未见过的 10 个令人惊叹的 JavaScript 技巧

 HTML+CSS+JS 实现动态模态超级英雄卡片效果

使用 HTML 和 CSS 创建 3D 菜单效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/911789.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GitLab基于Drone搭建持续集成(CI/CD)

本文介绍了如何为 Gitee 安装 Drone 服务器。服务器打包为在 DockerHub 上分发的最小 Docker 映像。 1. 准备工作 创建OAuth应用 创建 GitLab OAuth 应用。Consumer Key 和 Consumer Secret 用于授权访问极狐GitLab 资源。 ps:授权回调 URL 必须与以下格式和路径匹配&…

RHCE 第四次作业

一.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 1.配置环境 [rootlocalhost ~]# yum install bind [rootlocalhost ~]#systemctl stop firewalld [rootlocalhost ~]#setenforce 0 2.配置DNS主服务器 [rootlocalhost ~]# vim /etc/named.conf options { …

【ArcGIS】绘制各省碳排放分布的中国地图

首先&#xff0c;准备好各省、自治区、直辖市及特别行政区&#xff08;包括九段线&#xff09;的shp文件&#xff1a; 通过百度网盘分享的文件&#xff1a;GS&#xff08;2022&#xff09;1873 链接&#xff1a;https://pan.baidu.com/s/1wq8-XM99LXG_P8q-jNgPJA 提取码&#…

关于CountDownLatch失效问题

一、项目背景 这几天要开发一个类似支付宝那种年度账单统计的功能&#xff0c;就是到元旦后支付完会把用户这一年的消费情况从各个维度&#xff08;我们把这一个维度称作一个指标&#xff09;统计分析形成一张报告展示给用户。 这个功能实现用到了CountDownLatch。假如统计分析…

【专题】2024年全球生物医药交易报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38191 在当今复杂多变的全球经济环境下&#xff0c;医药行业正面临着诸多挑战与机遇。2024 年&#xff0c;医药行业的发展态势备受关注。 一方面&#xff0c;全球生物医药交易活跃&#xff0c;2021 - 2023 年的交易中&#xff0c;已…

鸿蒙5.0时代:原生鸿蒙应用市场引领开发者服务新篇章

前言 10月22日原生鸿蒙之夜发布会宣布HarmonyOS NEXT正式发布&#xff0c;首个版本号&#xff1a;鸿蒙5.0。这次“纯血鸿蒙”脱离了底层安卓架构成为纯国产的独立系统&#xff0c;仅凭这一点就有很多想象空间。 目前鸿蒙生态设备已超10亿&#xff0c;原生鸿蒙操作系统在中国市…

3.PyCharm工具

第三方IDE&#xff0c;集成开发工具&#xff0c;官网下载。 社区版本&#xff0c;免费使用。 创建项目 配置解释器&#xff0c;创建python文件&#xff0c;编写代码&#xff0c;运行&#xff1a;

arkUI:Flex弹性布局的各个属性

arkUI&#xff1a;Flex弹性布局的简单使用 1 主要内容说明2 相关内容2.1 Flex弹性布局的方向2.1.1 源码1的简答说明2.1.2 源码1 &#xff08;Flex弹性布局的方向&#xff09;2.1.3 源码1运行效果2.1.3.1 当direction: FlexDirection.RowReverse2.1.3.2 当direction: FlexDirect…

串口接收,不定长数据接收

###1.CUBE-MX配置串口 2.我采用串口中断接收&#xff0c;打开中断接口 3.时钟同样8倍频&#xff0c;1分频&#xff0c;使用内部时钟 打开串口中断 main() { __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); // 启用空闲中断__HAL_UART_ENABLE_IT(&huart1, UART_IT_R…

TikTok本土店vs跨境店:解读TikTok小店差异

TikTok小店的两种主要的店铺类型&#xff1a;本土店和跨境店&#xff0c;虽然这两种店铺在功能上有相似之处&#xff0c;但它们在运营模式、市场定位、目标受众和面临的挑战等方面存在显著的区别。 一、定义与基本特征 1. TikTok本土店 本土店指的是在特定国家或地区内经营的…

深度学习——优化算法、激活函数、归一化、正则化

文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;优化算法方法梯度下降 (Gradient Descent, GD)动量法 (Momentum)AdaGrad (Adaptive Gradient Algorithm)RMSProp (Root Mean Square Propagation)Adam (Adaptive Moment Estimation)AdamW 优化算法总结 经验和实践建议…

用 Python搭建一个微型的HTTP服务器用于传输 2024/11/9

使用内置的 http.server 模块,来搭建微型服务器。 快速启动服务器http.server --- HTTP 服务器Python 3.13.0 文档 声明:文章代码部分 由 ai 生成 创建一个简单的文件共享服务器 进入 需要共享的目录 再打开cmd 输入以下代码 python -m http.server 8000 打开服务器 设置主…

虚拟机linux7.9下安装mysql

1.MySQL官网下载安装包&#xff1a; MySQL :: Download MySQL Community Server https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 2.解压文件&#xff1a; #tar xvzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 3.移动文件&#…

Turtlebot3 buger 硬件与操作平台详细介绍

引言 TurtleBot3 有三个版本&#xff0c;分别是紧凑型的 Burger、功能更强的 Waffle和性能提升的 Waffle Pi&#xff0c;分别适用于不同的应用需求。使用 Raspberry Pi 作为主控单板计算机&#xff08;SBC&#xff09;&#xff0c;而 Waffle Pi 可以使用更强大的 NVIDIA Jetson…

LabVIEW导入并显示CAD DXF文件图形 程序见附件

LabVIEW导入并显示CAD DXF文件图形 程序见附件 LabVIEW导入并显示CAD DXF文件图形 程序见附件 - 北京瀚文网星科技有限公司 LabVIEW广泛应用于自动化、数据采集、图形显示等领域。对于涉及CAD图形的应用&#xff0c;LabVIEW也提供了一些方法来导入和显示CAD DXF文件&#x…

北斗智能定位平板终端|三防平板|北斗有源终端|北斗搜救终端

在当今快速发展的科技时代&#xff0c;智能设备的应用已经渗透到我们生活的方方面面&#xff0c;从日常娱乐到专业工作&#xff0c;无一不彰显着科技的魅力。特别是在高精度定位领域&#xff0c;随着全球卫星导航系统&#xff08;GNSS&#xff09;技术的不断进步&#xff0c;智…

40.第二阶段x86游戏实战2-初识lua

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

华为ENSP--ISIS路由协议

项目背景 为了确保资源共享、办公自动化和节省人力成本&#xff0c;公司E申请两条专线将深圳总部和广州、北京两家分公司网络连接起来。公司原来运行OSFP路由协议&#xff0c;现打算迁移到IS-IS路由协议&#xff0c;张同学正在该公司实习&#xff0c;为了提高实际工作的准确性和…

【Hadoop实训】Flume系统负载均衡测试

一、搭建并配置Flume机器 在master上&#xff0c;执行&#xff1a; scp -r /export/servers/flume slave1:/export/servers/scp -r /export/servers/flume slave2:/export/servers/scp /etc/profile slave1:/etc/profilescp /etc/profile slave2:/etc/profile 执行完上述指令后…

Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)

前言&#xff1a;多线程编程已经广泛开始使用&#xff0c;其可以充分利用系统资源来提升效率&#xff0c;但是线程安全问题也随之出现&#xff0c;它直接影响了程序的正确性和稳定性&#xff0c;需要对其进行深入的理解与解决。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解…