开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
语音技术

    实现步骤

    实现步骤

    只需三步1小时内即可完成语音合成接口的调用,让您的应用“开口说话”。

    Step1:成为百度AI开放平台的开发者

    要调用百度AI开放平台的语音合成能力先要成为百度AI开放平台的开发者,首先让我们花5分钟来注册百度AI开放平台的开发者,并新建一个百度语音合成应用。

    先点击此处注册百度账户进入 如下图 的页面快速的建立一个百度账号吧。 CC6E6D367F106DB40FA6BF33753E5A33.JPG 我们有账号之后登录,并且点击此处创建一个应用如下图 image.png image.png image.png

    然后就能看到创建完的应用和 API KEY 以及 Secret KEY

    image.png

    Step2:领取免费额度

    创建完应用后,可以到概览页领取语音合成的免费额度。免费额度说明详见语音合成免费额度文档 image.png

    Step3:准备数据

    语音合成是将文本转换为可以播放的音频文件的服务,我们从大姚的订单库中找一段订单信息的文本如下:

    三分钟前,由北京市顺义区二经路与二纬路交汇处北侧,北京首都国际机场T3航站楼 去往 东城区北三环东路36号喜来登大酒店(北京金隅店)

    Step4: 编写一个示例程序

    第一步API KEY 以及 Secret KEY第二步领取的免费额度,以及第三步的数据,我们就可以写一个示例代码调用百度AI开放平台的语音合成能力

    准备开发环境

    大姚选择用python来快速搭建一个原型,那我们就安装一下python。可以参考下表列出的不同操作系统的安装方法进行安装。

    Python的官方下载地址:下载python

    Windows 快速测试包

    windows平台的用户如果对上述的python安装感到困难,可以下载我们的一键测试包,下载地址:windows测试包

    解压zip文件后,双击run.bat即可测试。

    编写代码

    新建一个 main.py

    粘贴以下内容,不要忘记替换你的 API_KEY 以及 SECRET_KEY

    # coding=utf-8
    
    import sys
    import json
    
    # 保证兼容python2以及python3
    IS_PY3 = sys.version_info.major == 3
    if IS_PY3:
        from urllib.request import urlopen
        from urllib.request import Request
        from urllib.error import URLError
        from urllib.parse import urlencode
        from urllib.parse import quote_plus
    else:
        import urllib2
        from urllib import quote_plus
        from urllib2 import urlopen
        from urllib2 import Request
        from urllib2 import URLError
        from urllib import urlencode
    
    # 替换你的 API_KEY
    API_KEY = 'nu9r2plGFi3s1ugayDPSM6Mk'
    
    # 替换你的 SECRET_KEY
    SECRET_KEY = 'G62YGnq84eKTqu0mBgvdpmC6gNBzHdai'
    
    # 大姚的订单信息内容文本
    TEXT = "三分钟前,由北京市顺义区二经路与二纬路交汇处北侧,北京首都国际机场T3航站楼 去往 东城区北三环东路36号喜来登大酒店(北京金隅店)"
    
    
    
    TTS_URL = 'http://tsn.baidu.com/text2audio'
    
    """  TOKEN start """
    
    TOKEN_URL = 'http://openapi.baidu.com/oauth/2.0/token'
    
    
    """
        获取token
    """
    def fetch_token():
        params = {'grant_type': 'client_credentials',
                  'client_id': API_KEY,
                  'client_secret': SECRET_KEY}
        post_data = urlencode(params)
        if (IS_PY3):
            post_data = post_data.encode('utf-8')
        req = Request(TOKEN_URL, post_data)
        try:
            f = urlopen(req, timeout=5)
            result_str = f.read()
        except URLError as err:
            print('token http response http code : ' + str(err.code))
            result_str = err.read()
        if (IS_PY3):
            result_str = result_str.decode()
    
    
        result = json.loads(result_str)
    
        if ('access_token' in result.keys() and 'scope' in result.keys()):
            if not 'audio_tts_post' in result['scope'].split(' '):
                print ('please ensure has check the tts ability')
                exit()
            return result['access_token']
        else:
            print ('please overwrite the correct API_KEY and SECRET_KEY')
            exit()
    
    
    """  TOKEN end """
    
    if __name__ == '__main__':
    
        token = fetch_token()
    
        tex = quote_plus(TEXT)  # 此处TEXT需要两次urlencode
    
        params = {'tok': token, 'tex': tex, 'cuid': "quickstart",
                  'lan': 'zh', 'ctp': 1}  # lan ctp 固定参数
    
        data = urlencode(params)
    
        req = Request(TTS_URL, data.encode('utf-8'))
        has_error = False
        try:
            f = urlopen(req)
            result_str = f.read()
    
            headers = dict((name.lower(), value) for name, value in f.headers.items())
    
            has_error = ('content-type' not in headers.keys() or headers['content-type'].find('audio/') < 0)
        except  URLError as err:
            print('http response http code : ' + str(err.code))
            result_str = err.read()
            has_error = True
    
        save_file = "error.txt" if has_error else u'大姚的订单信息.mp3'
    
        with open(save_file, 'wb') as of:
            of.write(result_str)
    
        if has_error:
            if (IS_PY3):
                result_str = str(result_str, 'utf-8')
            print("tts api  error:" + result_str)
    
        print("file saved as : " + save_file)

    运行代码

    在命令行中运行python main.py

    结果

    代码运行成功后,在main.py的同级目录中会产生一个 大姚的订单信息.mp3 文件,大姚打开一听觉得这就是他想要的效果,让我们一起来听听看:

    上一篇
    订单播报类APP开发案例
    下一篇
    了解更多