华为云函数调用百度ai sdk实现语音合成

举报
代码哈士奇 发表于 2021/03/24 14:40:09 2021/03/24
【摘要】 华为云函数调用百度ai sdk实现语音合成

使用云函数调用百度ai开放平台的各种sdk
云函数环境为 nodejs12.13如果不会创建 参考之前的博客
本文介绍语音合成的使用



注册百度ai开放平台语音合成应用

进入百度ai开放平台控制台 找到语音技术 创建应用

语音合成有免费次数 放心使用

图片.png

图片.png

图片.png

在应用列表获取
AppID
API Key
Secret Key

图片.png

本地准备

参考官方文档 https://cloud.baidu.com/doc/SPEECH/s/Zk4nlz8c8

安装SDK

本地新建空目录
图片.png

打开cmd 进入目录
执行
npm install baidu-aip-sdk

图片.png

新建voi.js文件 配置语音合成

图片.png

var AipSpeechClient = require("baidu-aip-sdk").speech;

// 设置APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";

// 新建一个对象,建议只保存一个对象调用服务接口
const client = new AipSpeechClient(APP_ID, API_KEY, SECRET_KEY);

module.exports = client

配置index.js文件

新建index.js文件 将云函数index.js内容复制进来
图片.png

引入语音合成

const client = require("./voi.js")

接收参数

let vois = event.queryStringParameters.vois;

完整代码

const client = require("./voi.js")
exports.handler = async (event, context, callback) => {
	let vois = event.queryStringParameters.vois;
	let result = await client.text2audio(vois, {spd: 5, per: 4});
	let mpfile = "";
	if(result.data){
		mpfile = result.data.toString("base64");
	}else{
		mpfile = result;
	}
    let response=
    {
        'statusCode': 200,
        'headers':
        {
            'Content-Type': 'audio/mpeg'
        },
        'isBase64Encoded': true,
        'body': `${mpfile}`,
    }
    callback(null, response);
}


完成后打zip压缩包上传代码

创建触发器

图片.png

图片.png

测试

图片.png

图片.png

拓展

我们也可以改变语速 语调 音量 和 声音
图片.png

拓展代码如下

其实就是将这几个可变的 以参数形式传入

其中 合成的语句为必须 其他的如果不传入 就会按默认执行

const client = require("./voi.js")
exports.handler = async (event, context, callback) => {
	let vois = event.queryStringParameters.vois;
    let spd = event.queryStringParameters.spd;
    let pit = event.queryStringParameters.pit;
    let vol = event.queryStringParameters.vol;
    let per = event.queryStringParameters.per;
	let result = await client.text2audio(vois, {spd,pit,vol,per});
	let mpfile = "";
	if(result.data){
		mpfile = result.data.toString("base64");
	}else{
		mpfile = result;
	}
    let response=
    {
        'statusCode': 200,
        'headers':
        {
            'Content-Type': 'audio/mpeg'
        },
        'isBase64Encoded': true,
        'body': `${mpfile}`,
    }
    callback(null, response);
}

测试拓展

只传入合成语句

图片.png

降低语速

图片.png

结语

参照语音合成 我们一样可以调用 图像识别 下篇 云函数调用图像识别

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。