前端使用百度 TTS(语音合成)非常详细

1 篇文章 0 订阅
1 篇文章 0 订阅

1.百度TTS应用创建

  1. 领取个人免费额度

语音合成_在线语音合成_离线语音合成-百度AI开放平台 (baidu.com)
点击立即选购,领取个人或企业免费额度
在这里插入图片描述

  1. 控制台创建应用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.代码

完整代码已上传至github:void00013/9.TTS-ASR (github.com)

流程总体来说分为两步:

  1. 获取accesstoken(这个接口有跨域限制)
  2. 语音合成(这个接口无跨域限制,需要注意的是这个接口返回的数据是blob二进制流的形式,如果你使用axios去请求,它默认的responseType是json,即使你把这个json转换为blob形式也无法使用,所以使用axios请求的时候需要在config中配置responseType为blob,这样才可以正确的拿到语音数据)
<template>
  <div class="app">
    <div class="get_token">
      <h1>1.请输入你的client_id和client_secret获取access_token</h1>
      <el-row :gutter="50">
        <el-col :span="8">
          <el-input v-model.trim="client_id" placeholder="请输入你的client_id(应用的API Key)" />
        </el-col>
        <el-col :span="8">
          <el-input v-model.trim="client_secret" placeholder="请输入你的client_secret(应用的Secret Key)" />
        </el-col>
        <el-col :span="8"><el-button @click="handleGetAccessToken">获取AccessToken</el-button></el-col>
      </el-row>
    </div>

    <hr>

    <div class="text2audio">
      <h1>2.语音合成</h1>
      <h4>免费的只能使用前4种语音</h4>
      <el-radio-group v-model="per">
        <el-radio-button label="1">度小宇</el-radio-button>
        <el-radio-button label="0">度小美</el-radio-button>
        <el-radio-button label="3">度逍遥(基础)</el-radio-button>
        <el-radio-button label="4">度丫丫</el-radio-button>
        <el-radio-button label="5003">度逍遥(精品)</el-radio-button>
        <el-radio-button label="5118">度小鹿</el-radio-button>
        <el-radio-button label="106">度博文</el-radio-button>
        <el-radio-button label="110">度小童</el-radio-button>
        <el-radio-button label="111">度小萌</el-radio-button>
        <el-radio-button label="103">度米朵</el-radio-button>
        <el-radio-button label="5">度小娇</el-radio-button>
      </el-radio-group>
      <el-row :gutter="50">
        <el-col :span="8">
          <el-input v-model.trim="inputText" placeholder="请输入你要转化的文本" />
        </el-col>
        <el-col :span="2"><el-button @click="handleTextToAudio">语音合成</el-button></el-col>
        <el-col :span="8">
          <audio :src="audioSrc" v-if="audioSrc" controls>
            您的浏览器不支持音频播放。
          </audio>
        </el-col>
      </el-row>
    </div>

  </div>
</template>

<script setup>
import { ref } from "vue";
import axios from "axios";
import qs from "qs";
import { ElMessage } from "element-plus";

// client_id是你创建的应用的API Key
const client_id = ref("");
// client_secret是你创建应用的Secret Key
const client_secret = ref("");
// 配音角色
const per = ref("1");
const inputText = ref("");
const audioSrc = ref("");

// 提示
const openMsg = (message, type) => {
  ElMessage({
    message,
    type,
  });
};

// 1.获取AccessToken
const handleGetAccessToken = async () => {
  try {
    const option = {
      grant_type: "client_credentials",
      client_id: client_id.value,
      client_secret: client_secret.value,
    };
    const res = await axios.post("/oauth/2.0/token", qs.stringify(option));
    if (res.status !== 200) {
      return openMsg(res.statusText, "warning");
    }
    openMsg("获取token成功", "success");
    localStorage.setItem("access_token", res.data.access_token);
    client_id.value = "";
    client_secret.value = "";
  } catch (error) {
    console.log(error);
  }
};

// 2.语音合成接口调用
const handleTextToAudio = async () => {
  const token = localStorage.getItem("access_token");
  if (!token) {
    return openMsg("请先获取token!", "warning");
  }
  textToAudio(token);
};
const textToAudio = async (token) => {
  const option = {
    tex: inputText.value,
    tok: token,
    cuid: `${Math.floor(Math.random() * 1000000)}`,
    ctp: "1",
    lan: "zh",
    per: per.value,
  };
  const res = await axios.post("/text2audio", qs.stringify(option), {
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    responseType: "blob",
  });
  if (res.status !== 200) {
    return openMsg(res.statusText, "warning");
  }
  openMsg("语音合成成功", "success");
  audioSrc.value = URL.createObjectURL(res.data);
};
</script>

<style scoped>
.app {
  width: 80%;
  height: 100%;
  margin: auto;
}

:deep(.el-radio-group) {
  margin-bottom: 30px;
}
</style>

3.演示

  1. 首先填入你应用的API Key和Secret Key(在控制台应用列表种查看),填入后点击获取AccessToken
  2. 输入你要转换为语音的文本,选择人物(免费版只能使用前4个)

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TTS即文本语音合成(Text-to-Speech),是一种将计算机生成的文本转换为自然语音的技术。而Python语言是一种非常流行的编程语言,因其易学易用的特点,被广泛应用于各种领域。 在Python中,我们可以使用第三方库来实现TTS功能。其中,最常用的库是pyttsx3。使用pyttsx3库,我们可以加载指定的语音引擎,并设置其属性,如语速、语调等。接下来,我们可以调用其say()方法,并传入文本内容,即可实现语音合成使用pyttsx3库进行TTS语音合成功能的实现,我们需要先安装该库。可以通过以下命令在终端中进行安装: ``` pip install pyttsx3 ``` 安装完成后,我们可以编写Python代码来实现TTS语音合成功能。例如,下面是一个简单的示例: ```python import pyttsx3 def text_to_speech(text): engine = pyttsx3.init() engine.say(text) engine.runAndWait() if __name__ == '__main__': text_to_speech('欢迎使用TTS语音合成!') ``` 在上述示例中,我们导入了pyttsx3库,并定义了一个text_to_speech()函数用于接收文本内容并进行语音合成。在main函数中,我们调用text_to_speech()函数,并传入欢迎语句进行合成。 当我们运行上述代码时,语音合成引擎会将输入的文本内容转换成自然语音,并播放出来。同时,我们还可以通过使用更多的参数和方法,对语音引擎的属性进行设定,以实现更加个性化的语音合成效果。 总之,Python的TTS语音合成功能可以通过pyttsx3库来实现,为我们提供了便捷的文本转语音的方式,可以应用于语音导航、语音交互等各种场景中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

void0086

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值