JavaScript 代码:

// 初始化 speechSynthesis API

const synth = window.speechSynthesis

// 获取 DOM 节点

const body = document.querySelector('body')

const textForm = document.querySelector('form')

const textInput = document.querySelector('#text-input')

const voiceSelect = document.querySelector('#voice-select')

const rate = document.querySelector('#rate')

const rateValue = document.querySelector('#rate-value')

const pitch = document.querySelector('#pitch')

const pitchValue = document.querySelector('#pitch-value')

let voices = []

function getVoiceList() {

voices = synth.getVoices()

// 循环 voices 数组,并逐一创建一个 option

voices.forEach((voice) => {

const option = document.createElement('option')

option.textContent = voice.name

// 设置 option 属性

option.setAttribute('data-lang', voice.lang)

option.setAttribute('data-name', voice.name)

voiceSelect.appendChild(option)

})

}

// synth.getVoices() 为异步执行

// synth.getVoices() 方法将在 synth.onvoiceschanged 触发时运行

// 因此须有如下语句,否则 synth.getVoices() 返回空数组

getVoiceList()

if (synth.onvoiceschanged !== undefined) {

synth.onvoiceschanged = getVoiceList

}

// 发音方法

function speakIt() {

// 若正在发音则直接返回

if (synth.speaking) {

return

}

if (textInput.value != '') {

// 添加 gif 动画

body.style.background = '#141414 url(./img/wave.gif) repeat'

body.style.backgroundPositionY = '-50px'

// 获取发音文本

const speakText = new SpeechSynthesisUtterance(textInput.value)

// 发音结束后触发的方法

speakText.onend = (e) => {

body.style.background = '#141414'

}

// 发音出错是触发的方法

speakText.onerror = (e) => {

alert('出现错误,请重试。')

}

// 获取 select 框当前选中的语言项并获取其 data-name 属性值

const selectVoice = voiceSelect.selectedOptions[0].getAttribute('data-name')

// 遍历 voices 数组,在 voice.name 中找到与上方 select 中选择的语言一致的选项

// 并把它赋值给 speakText.voice

voices.forEach((voice) => {

if (voice.name === selectVoice) {

speakText.voice = voice

}

})

// 设置发音速率

speakText.rate = rate.value

// 设置发音音调

speakText.pitch = pitch.value

// 开始发音

synth.speak(speakText)

}

}

// 提交表单

textForm.addEventListener('submit', (e) => {

e.preventDefault()

speakIt()

})

// 改变速率右侧的数值

rate.addEventListener('change', (e) => {

rateValue.textContent = rate.value

})

// 改变音调右侧的数值

pitch.addEventListener('change', (e) => {

pitchValue.textContent = pitch.value

})

html文字转语音代码,【JavaScript】实现文本转语音功能相关推荐

  1. 【离线文本转语音文件】java spring boot jacob实现文字转语音文件,离线文本转化语音,中英文生成语音,文字朗读,中文生成声音,文字生成声音文件,文字转语音文件,文字变声音。

    1.实现效果如下: 输入文字(支持中英文),点击转换生成***.wav文件,点击下载到本地就可. 生成后的音频文件播放,时长1分8秒 2.实现代码: 这次采用jacob实现,相比百度AI需要联网,本项 ...

  2. php在线拍照代码,Javascript+PHP实现在线拍照功能

    实现这个功能的前提是你的电脑设备上需要安装有摄像头设备,以及你的浏览器需要支持flash. HTML Javascript+PHP实现在线拍照功能 在body中加入一个用于调用摄像组件的容器id#ca ...

  3. php文字左右滚动代码,JavaScript

    js文字横向滚动特效 本文为大家分享了js文字横向滚动特效代码,具体实现内容如下: 页面布局 恭喜793765***获得 50元巨人点卡奖励 恭喜793765***获得 50元巨人点卡奖励 恭喜793 ...

  4. 语音识别(1)四行代码,完成文本转换语音

    语音识别,目标是:用电脑自动将人类的语音内容转换为相对因的文字,和将文字转换为语音. 文本➨语音: 使用pyttsx:python的包,直接使用pip进行安装. pip install pyttsx3 ...

  5. html 文字输出语音,html 录音与文本转语音demo

    $(function(){ mui.init() var rec=Recorder();//使用默认配置,mp3格式 $("#but").click(function(){ con ...

  6. html调用讯飞语音文本朗读,(原创)讯飞输入法的妙用:语音翻译+智能OCR + 文本转语音播报...

    重点: 语音翻译在第二,第三页: OCR: 也就是图片直接转文本的功能介绍在第三,第四页: 把转出来的文本直接朗读,并且配上背景音乐的介绍在第八页 - 第十二页: 前几年有人问我手机上有没有那种可以读 ...

  7. html5语音读取文字_资源:文本转语音的神器!快来!

    文字转语音的那些事 文本转语音视频现在已经成为很多自媒体配音的一种常态了,为视频增添了搞笑的气氛色彩!也可以应用在那些质量要求不高的场景中.比如一些小说网站的小说朗读,虽然听起来声音怪怪的.比较生硬! ...

  8. cordova语音通话_如何在Cordova中将文本转换为语音(语音合成)

    本文概述 语音合成是计算机生成的人类语音模拟.它用于将书面信息转换为更方便的听觉信息, 尤其是对于移动应用程序(如启用语音的电子邮件和统一消息传递).作为使用Javascript创建混合应用程序的开发 ...

  9. AVFoundation 文本转语音和音频录制 播放

    现在你应该对AVFoundation有了比较深入的了解,并且对数字媒体的细节也有了一定认识,下面介绍一下 AVFoundation的文本转语音功能 AVSpeechSynthesizer 开发者可以使 ...

  10. C++和python代码实现朗读文本的功能(附源代码)

    闲来无事,平时就喜欢看看小说之类的.突发奇想,好多小说软件上的听小说功能都是收费的,咱们写个小程序读一读,岂不是很哇塞! 看了一些资料,这里给大家分享出来,已经测试可以用. C++代码和python代 ...

最新文章

  1. linux shell 脚本 查找文件,Linux Shell在目录下使用for循环结合if查找文件的巧用
  2. aws-ec2-双网卡问题
  3. python画图简单代码-用python进行简单的画图操作
  4. SAP配置webdynpro完全手册 .
  5. Linux 卸载分区(会格式化分区数据)
  6. uva 10771——Barbarian tribes
  7. 算法之排序算法-选择排序与优化
  8. 俄美就《中导条约》磋商 普京:不希望进行军备竞赛
  9. drools 7.11.0.Final使用
  10. xml文件修改逆向android,Android逆向重置版(2)—起源
  11. Android 微光闪烁效果之更强Shimmer-android
  12. Android 换肤功能的实现(Apk插件方式)
  13. asp.Net下短信猫发送短信中的中文乱码解决
  14. 戴尔 Inspiron 530s 通过 Clover_v2.5k_r5093 安装 macOS Catalina 10.15.3 教程
  15. 现实世界的补丁长什么样? [ICSME 18] A Closer Look at Real-World Patches (结尾附论文阅读反思)
  16. 安装Jdeveloper 12C
  17. Cadence Allegro批量编辑元件属性的方法图文教程及视频演示
  18. 函数编程之Function
  19. 模型可视化工具-netron网页版
  20. Nagios Core 复现

热门文章

  1. plt.savefig 不保存边框_Matlab科研绘图 amp; 保存
  2. 计算机插件技术应用原理,计算机软件技术中插件技术的运用
  3. java 网页正文抽取算法_网页正文抽取算法 ContentExtractor
  4. python url中传递中文_Python编程:URL网址链接中的中文编码与解码
  5. linux实验总结及心得_安全实验室 | 内网渗透—Linux权限维持技巧总结
  6. linux驱动向不同串口发数据,Linux串口(serial、uart)驱动程序设计
  7. MATLAB(四)在高等数学中的应用
  8. 组合数学基本工具-- 排列与组合以及简单公式
  9. 李航《统计学习方法》---感知机
  10. 安卓逆向_25 --- 密码学 之 《Java加密与解密的艺术》