JS 简单调用百度TTS接口实现语音朗读

TTS简介

TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。网页作为世界之窗,自然是向所有人开放的,所以也就包括视力不好的人群了,而网页语音化并不是什么新技术,HTML语义化在某种层次上也是为了让网页语音化更好的实现。

正文

简单实现语音朗读,要说多简单,直接用别人的接口算不算简单?
我们要做的就是借用百度TTS接口,通过audio标签进行朗读。实现核心如下:

  1. 需要一个audio标签,包括其中的source标签,对audio标签不了解的可以去W3C HTML5音频教程看看
  2. 在audio的子标签source中设置src,具体内容为:src="http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=8&text="+content (content是要朗读的内容)
    参数:{
    lan:语言,
    ie:编码,
    spd:语速(1-9),
    text:要朗读的内容
    }
  3. audio标签可自定义controls,autoplay等标签特性,实现控制(可选)
    audio标签主要通过js添加,HTML代码如下
<audio controls autoplay>
    <source id="tts_source" type="audio/mpeg" src="http://tts.baidu.com/text2audio/text2audio?lan=zh&amp;ie=UTF-8&amp;spd=8&amp;text=">
</audio>

JS代码

    var content = "hello"
    var s = docuement.querySelector("#tts_source")
    s.src = s.src + content
    s.parentNode.load()

由于修改了audio的source标签,需要对audio进行刷新重加载,故用s.parentNode.load()方法

总结

该方法灵活性不太好,想要朗读网页内容需要获取不同的标签,而且内容文本不能过大(由于写入的文本是通过Get方式传给百度接口的,传送的文本数量受Get URL 请求的限制,不同的浏览器限制大小不尽相同,且中文占字符数较多)

附文

网页添加以下脚本可实现文本框输入值后进行朗读

  <script>
        //百度TTS地址
        var url = "http://tts.baidu.com/text2audio/text2audio?lan=zh&ie=UTF-8&spd=8&text="
        //添加audio标签
        var f = document.createDocumentFragment()
        var audio = document.createElement("audio")
        audio.controls="controls"
        audio.autoplay="autoplay"
        var source = document.createElement("source")
        source.id = "tts_source"
        source.type="audio/mpeg"
        source.src= url
        audio.appendChild(source)
        f.appendChild(audio)
        document.body.appendChild(f)

        //添加输入框和按钮
        var f1 = document.createDocumentFragment()

        var form = document.createElement("form")
        var textArea = document.createElement("textarea")
        textArea.rows="25"
        textArea.cols="50"
        textArea.name="content"

        var startBtn = document.createElement("input")
        startBtn.type = "button"
        startBtn.value = "Start"
        startBtn.onclick = function(){
            content = document.forms[0]["content"].value
            var sorce = document.querySelector("#tts_source")
            source.src = url + content
            sorce.parentNode.load()
        }
        form.appendChild(textArea)
        form.appendChild(startBtn)
        f1.appendChild(form)
        document.body.appendChild(f1)

   </script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容