• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

小程序语音:文字合成语音

武飞扬头像
Misha韩
帮助1

步骤:
1、获取百度语音token
2、将文字合成语音,获取url
3、播放url

一、获取token

getBaiDuYuYinAccessToken(body) {
    return doRequest(`https://aip.百度bce.com/oauth/2.0/token`, 'POST', body, false, false, {
      'content-type': 'application/x-www-form-urlencoded'
    })
  }
/**
   * 获取语音token
   * @returns {Promise<void>}
   */
  async getBaiDuYuYinAccessTokenData() {
    const { apiKey, secretKey, grantType } = BaiDuYuYin
    const res = await baiDuYuYinService.getBaiDuYuYinAccessToken({
      grant_type: grantType,
      client_id: apiKey,
      client_secret: secretKey
    })
    const { access_token } = res
    useSetStorageSync('baiDuYuYinAccessToken', access_token)
    useSetStorageSync('baiDuYuYinAccessTokenTime', new Date().getTime()) // 用于设置token过期
  }
/**
   * 初始化语音
   */
  getBaiDuYuYinAccessToken() {
    const baiDuYuYinAccessToken = useGetStorageSync('baiDuYuYinAccessToken') || ''
    if (!baiDuYuYinAccessToken) {
      this.getBaiDuYuYinAccessTokenData()
    } else {
      const tokenTime = useGetStorageSync('baiDuYuYinAccessTokenTime')
      const limitDay = new Date(parseInt(new Date().getTime() - tokenTime) * 1000).getDay()
      if (limitDay > 28) {  // token28天过期重新获取
        this.getBaiDuYuYinAccessTokenData()
      }
    }
  }

二、将文字合成语音,获取url

用到的参数:

const params = {
    tex: encodeURIComponent(encodeURIComponent(`查询到您已到达预约地点, 请从${enterStr}入口进入`)),
    tok: baiDuYuYinAccessToken,
    cuid: baiDuYuYinAccessToken,
    ctp: 1,
    lan: 'zh'
 }

获取url的方法:
1、拼接

const url = `http://tsn.百度.com/text2audio?tex=${params.tex}&tok=${params.tok}&cuid=${params.cuid}&ctp=${params.ctp}&lan=${params.lan}`

2、通过百度api

/**
   * 合成语音
   * @param body
   */
  composeBaiDuYuYinVoice(body) {
    return doRequest(`http://tsn.百度.com/text2audio`, 'GET', body)
  }
const res = await baiDuYuYinService.composeBaiDuYuYinVoice({
  tex: encodeURIComponent(encodeURIComponent('百度你好')),
  tok: baiDuYuYinAccessToken,
  cuid: baiDuYuYinAccessToken,
  ctp: 1,
  lan: 'zh'
})
console.log('语音合成结果', res)

结果如下:
学新通
方法2获取的结果需要转成url

三、播放

 const audio = Taro.createInnerAudioContext()
 audio.autoplay = true
 audio.src = url  // url为步骤二中的结果
 audio.play()

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcfhkf
系列文章
更多 icon
同类精品
更多 icon
继续加载