自己写了一个python利用合成—REST_API的例子,贴出来与大家分享下
泪线111 发布于2017-02 浏览:6385 回复:13
0
收藏

我使用的服务是:合成—REST_API

调用的接口是:

参数设置情况:

开发平台和机型:python

SDK版本号:

代码或日志截图(上传截图能帮助您更快解决问题):

import urllib.request
import urllib
import json
import urllib.parse
import base64
import os
import wave
import pyaudio
import struct
import mp3play
import time
Api_Key='YourKey'
Secrect_Key='YourKey'
url = 'https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id='+Api_Key+'&client_secret='+Secrect_Key
ServerUrl='http://tsn.baidu.com/text2audio'
res = urllib.request.urlopen(url).read()
data = json.loads(res)
token = data['access_token'] #获取的token
print('token获取成功:',token)

text='我喜欢吃红烧肉'
lan='zh'
cuid='YourCUID'
date={'tex':text,'lan':lan,'cuid':cuid,'ctp':1,'tok':token}
date_urlencode=urllib.parse.urlencode(date)
print(type(date_urlencode))#查看date_urlencodede 类型
r=urllib.request.urlopen(ServerUrl,str.encode(date_urlencode))
print(r.getcode())
result=r.read()
file=open(r"voice.mp3","wb")
file.write(result)

file.close()

os.system("voice.mp3")#调用系统应用播放声音



复现步骤、现象及其他描述:

收藏
点赞
0
个赞
共13条回复 最后由peter_link回复于2017-11
#14peter_link回复于2017-11

ubuntu16亲测可以的,安装一个sox就行。

0
#13zwamm回复于2017-10

请问咋安装python的语音sdk啊?

0
#12王子颖520回复于2017-08

太恐怖了

0
#11泪线111回复于2017-07

k1d0ne:

不懂

回复k1d0ne:你可以先看官方提供的java代码,我就是根据Java代码修改

0
#10k1d0ne回复于2017-07

不懂

0
#9亚顿李回复于2017-04

ubuntu上没找到很好用的包,都得先display一个窗口,再播放。

我试验了mp3play,pygame,pyaudio,pyglet,大家有推荐吗?

0
#8xujiayuxjy回复于2017-04

泪线111:

回复xujiayuxjy:

您好,这里的urlencode是为了将我们的数据打包成能传给百度api的数据格式

我的最原始数据是python中的dict格式,经过

date_urlencode=urllib.parse.urlencode(date)

变成了str格式,在传给百度api的时候又用了

r=urllib.request.urlopen(ServerUrl,str.encode(date_urlencode))

其中的str.encode默认utf-8将date_urlencode编码

至于matlab中怎么写,你可以参考下我的过程,不对的话,多试几次就好了


回复泪线111:已实现拉 3Q

0
#7泪线111回复于2017-04

xujiayuxjy:

我看文档那边说要urlencode两次。我是在matlab 平台弄的,我用matlab 平台的urlencode两次会 --清---  %25E6%25B8%2585这样的编码,你这边python用来一次,是等效的么?

回复xujiayuxjy:

您好,这里的urlencode是为了将我们的数据打包成能传给百度api的数据格式

我的最原始数据是python中的dict格式,经过

date_urlencode=urllib.parse.urlencode(date)

变成了str格式,在传给百度api的时候又用了

r=urllib.request.urlopen(ServerUrl,str.encode(date_urlencode))

其中的str.encode默认utf-8将date_urlencode编码

至于matlab中怎么写,你可以参考下我的过程,不对的话,多试几次就好了


0
#6xujiayuxjy回复于2017-04

我看文档那边说要urlencode两次。我是在matlab 平台弄的,我用matlab 平台的urlencode两次会 --清---  %25E6%25B8%2585这样的编码,你这边python用来一次,是等效的么?

0
#5泪线111回复于2017-03

neo788:

回复neo788:

Traceback (most recent call last):

  File "get_out.py", line 12, in

    import mp3play

  File "/usr/local/lib/python3.5/dist-packages/mp3play/__init__.py", line 6, in

    raise Exception("mp3play can't run on your operating system.")

Exception: mp3play can't run on your operating system.


回复neo788:我在windows下做的,代码报错了mp3play不能运行在ubuntu,你可以选择其他播放插件

0
#4neo788回复于2017-02

neo788:

这个只是在Windows下才可以的吗?Ubuntu下有报错

回复neo788:

Traceback (most recent call last):

  File "get_out.py", line 12, in

    import mp3play

  File "/usr/local/lib/python3.5/dist-packages/mp3play/__init__.py", line 6, in

    raise Exception("mp3play can't run on your operating system.")

Exception: mp3play can't run on your operating system.


0
#3neo788回复于2017-02

这个只是在Windows下才可以的吗?Ubuntu下有报错

0
#2水寒319回复于2017-02

赞!!!可以放到置顶帖中

0
TOP
切换版块