加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

用CSS+jQuery写文字转语音机器人的方式及代码是什么

发布时间:2023-07-13 12:48:09 所属栏目:语言 来源:
导读:今天就跟大家聊聊有关“用CSS+jQuery写文字转语音机器人的方法及代码是什么”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“用CSS+jQuery写文

今天就跟大家聊聊有关“用CSS+jQuery写文字转语音机器人的方法及代码是什么”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“用CSS+jQuery写文字转语音机器人的方法及代码是什么”文章能对大家有帮助。

机器人样式参考了下图,通过css拼造型的方式进行实现。部分还原了设计图

头顶部分 头顶部分是一个圆+伪类after实现白点

<div class="tianxian"></div>

.tianxian{

width: 35px;

height: 35px;

border-radius: 50%;

background: #0e58cc;

position: absolute;

left: 0;

right: 0;

top: 0;

margin: auto;

}

.tianxian::after{

content: '';

display: block;

width: 5px;

height: 10px;

border-radius: 12px;

background: #fff;

position: absolute;

top: 10px;

left: 5px;

transform: rotateZ(20deg);

}

登录后复制

整体布局采用绝对定位布局 利用整个头部,实现耳朵和眼睛的定位

<div class="head">

<div class="erduo"></div>

<div class="erduo"></div>

<div class="face">

<div class="eye"></div>

<div class="eye"></div>

</div>

</div>

登录后复制

立体效果 通过box-shadow 的inset特性,通过适当偏移x,y轴,实现内阴影的立体效果

box-shadow: -5px -5px 30px 1px #0075af inset;

登录后复制

文字转语音实现

基于浏览器提供的SpeechSynthesisUtterance Api进行实现

SpeechSynthesisUtterance基本属性

SpeechSynthesisUtterance.lang 获取并设置话语的语言

SpeechSynthesisUtterance.pitch 获取并设置话语的音调(值越大越尖锐,越低越低沉)

SpeechSynthesisUtterance.rate 获取并设置说话的速度(值越大语速越快,越小语速越慢)

SpeechSynthesisUtterance.text 获取并设置说话时的文本

SpeechSynthesisUtterance.voice 获取并设置说话的声音

SpeechSynthesisUtterance.volume 获取并设置说话的音量

SpeechSynthesisUtterance.text基本方法

speak() 将对应的实例添加到语音队列中

cancel() 删除队列中所有的语音.如果正在播放,则直接停止

pause() 暂停语音

resume() 恢复暂停的语音

为按钮添加点击事件,获取input输入框的值,并进行播放,添加眼睛动画,并在播放结束的回调移除眼睛动画

$('#btn').click(function () {

let text = $('#input').val()

if (text) {

$('.eye').addClass('shine')

}

let u = new window.SpeechSynthesisUtterance()

u.text = text

u.lang = 'zh'

u.rate = 0.7

u.onend = function () {

$('.eye').removeClass('shine')

}

speechSynthesis.speak(u)

})

登录后复制

动画类:

.shine {

animation: shine 1s linear infinite;

}

@keyframes shine {

0%{

height: 100px;

}

100%{

height: 0px;

}

}

登录后复制

完整代码:

HTML+CSS

<style>

* {

margin: 0;

padding: 0;

list-style: none;

box-sizing: border-box;

}

 

html,

body {

width: 100%;

height: 100%;

overflow: hidden;

background: #000;

}

.robot{

width: 658px;

height:800px;

position: absolute;

left: 0;

right: 0;

margin: auto;

top: 0;

bottom: 0;

}

.tianxian{

width: 35px;

height: 35px;

border-radius: 50%;

background: #0e58cc;

position: absolute;

left: 0;

right: 0;

top: 0;

margin: auto;

}

.tianxian::after{

content: '';

display: block;

width: 5px;

height: 10px;

border-radius: 12px;

background: #fff;

position: absolute;

top: 10px;

left: 5px;

transform: rotateZ(20deg);

}

.gun{

width: 5px;

height: 30px;

background:#0075af ;

position: absolute;

left: 0;

right: 0;

top: 35px;

margin: auto;

}

.gai{

width: 60px;

height: 60px;

background: #fff;

box-shadow: -5px -5px 30px 1px #0075af inset;

position: absolute;

left: 0;

right: 0;

top: 65px;

margin: auto;

border-radius: 50%;

}

.head{

width: 370px;

height: 350px;

position: absolute;

left: 0;

right: 0;

top: 95px;

margin: auto;

border-radius: 70px;

background: #fff;

box-shadow: -5px -5px 30px 1px #0075af inset;

}

.erduo{

width: 60px;

height: 180px;

background: #0022b0;

position: absolute;

top: 0;

bottom: 0;

margin: auto 0;

border-radius: 60px;

border-top: 4px solid #0e9df9;

border-bottom: 4px solid #0e9df9;

box-shadow: -5px -5px 30px 1px #0075af inset;

}

.erduo:nth-child(1) {

border-left: 4px solid #0e9df9;

left: -40px;

}

.erduo:nth-child(2){

border-right: 4px solid #0e9df9;

right: -40px;

box-shadow: -5px -5px 30px 1px #0075af inset;

}

.face{

width: 288px;

height: 244px;

background: #03192f;

position: absolute;

left: 0;

right: 0;

top: 0;

bottom: 0;

margin: auto;

border-radius: 60px;

box-shadow: -5px -5px 30px 1px #0075af inset;

}

.eye{

width: 30px;

height: 100px;

background-image: url('https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/41c21816e3c740eaa43ade57de3eb5a5~tplv-k3u1fbpfcp-watermark.image');

background-size: contain;

position: absolute;

top: 0;

bottom: 0;

margin: auto;

}

.eye:nth-child(1){

left: 60px;

}

.eye:nth-child(2){

right: 60px;

}

.trans{

width:370px;

position: absolute;

display: flex;

justify-content: center;

align-items: center;

color: #fff;

left: 0;

right: 0;

margin: auto;

top: 600px;

font-size: 16px;

}

#input{

margin-right: 10px;

background: transparent;

border: none;

outline: none;

color: #fff;

border-bottom: 1px dashed #fff;

height: 40px;

}

#btn{

cursor: pointer;

}

.shine {

animation: shine 1s linear infinite;

}

@keyframes shine {

0%{

height: 100px;

}

100%{

height: 0px;

}

}

</style>

<body>

<div class="robot">

<div class="tianxian"></div>

<div class="gun"></div>

<div class="gai"></div>

<div class="head">

<div class="erduo"></div>

<div class="erduo"></div>

<div class="face">

<div class="eye"></div>

<div class="eye"></div>

</div>

</div>

</div>

<div class="trans">

<input id="input" type="text">

<div id="btn">点击朗读</div>

</div>

</body>

登录后复制

js

$(function () {

$('#btn').click(function () {

let text = $('#input').val()

if (text) {

$('.eye').addClass('shine')

}

let u = new window.SpeechSynthesisUtterance()

u.text = text

u.lang = 'zh'

u.rate = 0.7

u.onend = function () {

$('.eye').removeClass('shine')

}

speechSynthesis.speak(u)

})

})

这篇关于“用CSS+jQuery写文字转语音机器人的方法及代码是什么”的文章就介绍到这了,更多相关的内容,小编将为大家输出更多高质量的实用文章!

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!