文字转语音播报

344 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

前言

突发奇想的,我觉得看小说太累了,所有我就想听小说,那怎么听到自己喜欢的小说呢,当然我们可以选择下载一些专门听小说的APP,但是有些喜欢的小说可能更新太慢,或者需要VIP,这就很尴尬了。

退而求其次,我想着要不网上找点文字转语音的工具,自己将喜欢的小说转成语音也是一样的,然而这些工具要么需要VIP,要么就是对字数有限制,太难了吧。

所以我就想,干脆要不自己简单实现一个吧,于是就有了下面的代码,基本功能是有了,但是也有很大缺陷,毕竟咱也不是专业的,我自己写的这个吧,不好的地方就是声音太机械了,要是能来一些网红主播的语音包就好了,还有就是转成语音后没法下载下来,不然我还能每天听一遍。

另外我在想啊,这算不算是一个小的商机呢,开发一个这样的小工具既可以上班划水摸鱼又可以赚零花钱,何乐而不为,当然啊前提是我得会好多东西,完全没有头绪呀,太难了,有没有大神可以指导一下呀。说不定就行了是吧。。。

完整代码


<template>

  <div class="app-container">

    <textarea v-model="word" type="textarea" class="textContent" />

    <div class="settings">

      音量:<el-input-number v-model="volume" :min="0" :max="10" style="margin-right: 10px;" />

      音调:<el-input-number v-model="pitch" :min="0" :max="10" style="margin-right: 10px;" />

      语速:<el-input-number v-model="rate" :min="0" :max="10" style="margin-right: 10px;" />

      <el-button

        type="primary"

        style="margin-top: 10px"

        @click="createAndPlay(word,volume,pitch,rate)"

      >

        生成语音并播放

      </el-button>

    </div>

  </div>

</template>

 

<script>

**export** **default** {

  name: 'App',

  **data**() {

    **return** {

      text: '',

      volume: 1,

      pitch: 1,

      rate: 2

    }

  },

 

  methods: {

    **createAndPlay**(word, volume, pitch, rate) {

      **const** synth = window.speechSynthesis

      **const** msg = **new** **SpeechSynthesisUtterance**()

      msg.text = word *// 文字内容*

      msg.lang = 'zh-CN' *// 文字格式*

      msg.volume = volume *// 播放音量*

      msg.pitch = pitch *// 音调高低,值越大越尖锐,越低越低沉*

      msg.rate = rate *// 播放语速,值越大语速越快,越小语速越慢*

      synth.**speak**(msg)

    }

 

  }

}

</script>

 

<style scoped lang="scss">

.textContent{

  height: 600px;

  width: 100%;

  padding: 10px;

}

</style>

页面展示

image.png