首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【微信小程序】接入微软azure文本转语音的记录

  • 24-03-18 03:09
  • 3947
  • 6796
blog.csdn.net

前言

想在微信小程序中实现文本转语音的功能,使用azure的RESTful API。
先说结论:还是在后台处理吧
现象:模拟器上运行是正常的,可以获得转换后的音频,真机调试时,statusCode:400,在官方文档中的解释是,参数错误,常见原因是:标头过长。
原因:小程序wx.request user-agent过长了,超过了azure官方文档API里的限制:255个字符。
小程序wx.request user-agent过长怎么解决?
解决方法:小程序请求自己后端,自己后端再请求第三方接口

所以正文只是想记录一下调用接口&实现的过程,万一哪天官方把这个限制改了呢~(如果是用在网站上的话,过程应该也差不多吧)

正文

首先,注册账号巴拉巴拉不提(因为不是我注册的0 0)好像是需要国外信用卡之类的?
将可以获得:
1.subscriptionKey,订阅密钥
2.区域信息,一般国内就是eastasia了。

使用过程:

1.获取subscriptionKey

因为subscriptionKey放后台了,所以前端使用的时候需要获取一下。

  getAzureKey() {
    request.get('xxxx').then(res => {
      if (res.data.code == '200') {
        this.setData({
          subscriptionKey: res.data.result.subscriptionKey
        })
      } else {
        console.log('something error')
      }
    })
  },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.开始获取语音

  getAudio(e) {
    let text ='你好!' //想要转换的文本
    let that = this
    //先获得token
    wx.request({
      url: 'https://eastasia.api.cognitive.microsoft.com/sts/v1.0/issueToken',
      method: 'POST',
      header: {
        'Ocp-Apim-Subscription-Key': that.data.subscriptionKey
      },
      success(res) {
        const token = res.data
        //开始转换
        wx.request({
          url: 'https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1',
          method: 'POST',
          data: `${text}`,
          header: {
            'Authorization': 'Bearer ' + token,
            'Content-Type': 'application/ssml+xml',
            'X-Microsoft-OutputFormat': 'audio-16khz-128kbitrate-mono-mp3',
          },
          responseType: "arraybuffer", //注意要转换成arraybuffer的
          success: function (result) {
            console.log(result)
            if (result.statusCode == '200') {
              console.log('ok')
              const fs = wx.getFileSystemManager();
              const filePath = wx.env.USER_DATA_PATH + "/output.mp3";
              fs.writeFileSync(filePath, result.data, "binary");//写入
              that.setData({
                audioSrc: filePath,
              });
              //音频播放
              const audio = wx.createInnerAudioContext();
              audio.src = filePath;
              audio.play();
              audio.onEnded(() => {
                console.log("Voice playback complete.");
              });
            } else {
              console.log(result)
            }
          }
        })
      },
      fail() {
        console.log('获取token失败')
      }
    })

  },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

完成。

后端正在写接口Ing,后续待补充。。。

注:本文转载自blog.csdn.net的Lana学习中的文章"https://blog.csdn.net/sinat_41838682/article/details/130045106"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

125
微软技术
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top