HTML人工合成声音 发表于 2020-06-01 | 分类于 HTML | 热度 ℃ | 字数统计 265 字 | 阅读时长 2 分钟 问答系统中可以使用的人工合成声音。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <div class="voiceinator"> <select name="voice" id="voices"> <option value="">Select A Voice</option> </select> <label for="rate">Rate:</label> <input name="rate" type="range" min="0" max="3" value="1" step="0.1"> <label for="pitch">Pitch:</label> <input name="pitch" type="range" min="0" max="2" step="0.1"> <textarea name="text">我起了 一枪秒了 有什么好说的</textarea> <button id="stop">Stop</button> <button id="speak">Speak</button> </div> <script type="text/javascript"> const synth = window.speechSynthesis const msg = new SpeechSynthesisUtterance() let voices = [] const voicesDropdown = document.querySelector('[name="voice"]') const options = document.querySelectorAll('[type="range"], [name="text"]') const speakButton = document.querySelector('#speak') const stopButton = document.querySelector('#stop') msg.text = '我起了 一枪秒了 有什么好说的' msg.lang = 'zh-CN' synth.addEventListener('voiceschanged',getSupportVoices) speakButton.addEventListener('click',throttle(handleSpeak,1000)) stopButton.addEventListener('click',handleStop) options.forEach(e => e.addEventListener('change',handleChange)) function getSupportVoices() { voices = synth.getVoices() voices.forEach(e => { const option = document.createElement('option') option.value = e.lang option.text = e.name voicesDropdown.appendChild(option) }) } function handleSpeak(e) { msg.lang = voicesDropdown.selectedOptions[0].value synth.speak(msg) } function handleStop(e) { synth.cancel(msg) } function handleChange(e) { msg[this.name] = this.value } function throttle(fn,delay) { let last = 0 return function() { const now = new Date() if(now - last > delay) { fn.apply(this,arguments) last = now } } } </script></body></html> donate the author Donate WeChat Pay Alipay