调用华为API实现语音合成

目录

  • 1.作者介绍
  • 2.华为云语音合成
    • [2.1 语音合成介绍](#2.1 语音合成介绍)
    • [2.2 华为语音合成服务](#2.2 华为语音合成服务)
    • [2.3 应用场景](#2.3 应用场景)
  • [3. 实验过程以及结果](#3. 实验过程以及结果)
    • [3.1 获取API密钥](#3.1 获取API密钥)
    • [3.2 调用语音合成算法API](#3.2 调用语音合成算法API)
    • [3.3 实验代码](#3.3 实验代码)
    • [3.4 运行结果](#3.4 运行结果)

1.作者介绍

袁斌,男,西安工程大学电子信息学院,2023级研究生

研究方向:医学影像大数据分析

电子邮件:1424233159@qq.com

吴思雨,女,西安工程大学电子信息学院,2023级研究生

研究方向:机器视觉与异常检测

电子邮件:2879944563@qq.com

2.华为云语音合成

2.1 语音合成介绍

语音合成技术,通常被称为文本到语音(Text-to-Speech,TTS),是一种将书面文本转换为自然语音的技术。其主要应用包括为视障人士提供信息获取渠道、智能语音助手、自动化呼叫中心,以及内容创作中的配音等。语音合成技术的发展历程可以大致分为几个阶段:基于规则的合成、统计参数合成(如隐马尔可夫模型,HMM),以及近年来的深度学习方法(如基于神经网络的WaveNet、Tacotron等)。

2.2 华为语音合成服务

华为语音合成服务,是一种将文本转换成逼真语音的服务。用户通过实时访问和调用API获取语音合成结果,将用户输入的文字合成为音频。通过音色选择、自定义音量、语速,为企业和个人提供个性化的发音服务。

2.3 应用场景

1.语音导航

使用语音合成服务将车载导航数据转换成语音素材,为用户提供精确的语音导航服务。利用个性化定制能力,提供丰富的导航语音服务。
2.有声读物

将书籍、杂志、新闻的文本内容转换成逼真的人声发音,充分解放人们的眼睛,在搭乘地铁、开车、健身等场景下获取信息、享受乐趣。

3.电话回访

在客服系统场景中,通过语音合成服务将回访内容转换成人声,直接使用语音和客户交流,提升用户体验。

4.智能教育

将书本上的文本内容合成为语音,接近真人的发音可模拟真人教学场景,实现课文的朗读和带读,帮助学生更好地理解和掌握教学内容。

3. 实验过程以及结果

3.1 获取API密钥

1、注册华为云账号,进行实名认证,开通服务。

2、AK/SK认证,下载文件credentials.csv。

3、登录控制台。

4、单击页面右上角的用户名,并选择"我的凭证"。进入"我的凭证"页面:

单击"访问秘钥"页签下的"新增访问密钥"。弹出"新增访问密钥"对话框:

输入"登录密码",如果绑定了手机或者邮箱,还需要获取验证码并进行验证。验证成功后,弹出访问密钥下载对话框。单击"确定",并根据提示下载保存访问密钥。如果已生成过AK/SK,找到原来已下载的AK/SK文件,文件名一般为:credentials.csv。

3.2 调用语音合成算法API

1、点击开发者页面下的开发工具

2、单击API Explorer进入华为云OpenAPI页面,搜索语音交互。

3、设置参数

输入需要语音合成的文本,设置语音格式,采样率,语种等参数,示例:

待合成的文本:明月几时有,把酒问青天?

语音格式头: mp3

采样率 : 8000

语种: chinese_xiaoqi_common 小琪,标准女声发音人

4、API 3.0 Explorer 在线接口调试图

调试成功之后,将自动生成的python代码复制即可,但是一定要记得填入自己的"AK/SK"!!

3.3 实验代码

将ak,sk等参数修改为获取的密钥,运行成功后获得temp.mp3文件,正是所输入文本的语音。

javascript 复制代码
# coding: utf-8
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdksis.v1.region.sis_region import SisRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdksis.v1 import *
import base64
def base64_to_file(base64_string, file_path):
    # 将base64字符串解码为字节流
    decoded_bytes = base64.b64decode(base64_string)
    # 将字节流写入文件
    with open(file_path, 'wb') as file:
        file.write(decoded_bytes)
if __name__ == "__main__":
    ak = __import__('os').getenv("CLOUD_SDK_AK")
    sk = __import__('os').getenv("CLOUD_SDK_SK")
    projectId = "6093a8e9e016484f9f9ccb3e85d1af45"
    credentials = BasicCredentials(ak, sk, projectId)
    client = SisClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(SisRegion.value_of("cn-east-3")) \
        .build()
    try:
        request = RunTtsRequest()
        configbody = TtsConfig(
            audio_format="mp3",
            sample_rate="8000",
            _property="chinese_xiaoqi_common",
            speed=10,
            pitch=10,
            volume=50
        )
        request.body = PostCustomTTSReq(
            config=configbody,
            text="明月几时有,把酒问青天"
        )
        response = client.run_tts(request)
        print(response)
        base64_to_file(response.result.data, "temp.mp3")
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

3.4 运行结果

相关推荐
阡之尘埃1 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
丕羽5 小时前
【Pytorch】基本语法
人工智能·pytorch·python
bryant_meng5 小时前
【python】Distribution
开发语言·python·分布函数·常用分布
m0_594526306 小时前
Python批量合并多个PDF
java·python·pdf
工业互联网专业6 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
vue.js·hadoop·python·flask·毕业设计·源码·课程设计
钱钱钱端6 小时前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·python·职场和发展·压力测试·postman
慕卿扬6 小时前
基于python的机器学习(二)—— 使用Scikit-learn库
笔记·python·学习·机器学习·scikit-learn
Json____7 小时前
python的安装环境Miniconda(Conda 命令管理依赖配置)
开发语言·python·conda·miniconda
小袁在上班7 小时前
Python 单元测试中的 Mocking 与 Stubbing:提高测试效率的关键技术
python·单元测试·log4j
白狐欧莱雅7 小时前
使用python中的pygame简单实现飞机大战游戏
经验分享·python·游戏·pygame