接口说明

语音合成接口将文字信息转化为声音信息,同时提供了众多极具特色的发音人(音库)供您选择。

接口地址

POST http://api.xfyun.cn/v1/service/v1/tts HTTP/1.1
Content-Type:application/x-www-form-urlencoded; charset=utf-8

请求参数

在 Http Request Header 中配置授权认证参数,见【接口概述-授权认证】。 其中 X-Param 为各配置参数组成的 JSON 串经 BASE64 编码之后的字符串,原始 JSON 串各字段说明如下:

参数 类型 必须 说明 示例
auf string 音频采样率,可选值:audio/L16;rate=8000,audio/L16;rate=16000 audio/L16;rate=16000
aue string 音频编码,可选值:raw(未压缩的pcm或wav格式),lame(mp3格式) raw
voice_name string 发音人,可选值:详见发音人列表 xiaoyan
speed string 语速,可选值:[0-100],默认为50 50
volume string 音量,可选值:[0-100],默认为50 50
pitch string 音高,可选值:[0-100],默认为50 50
engine_type string 引擎类型,可选值:aisound(普通效果),intp65(中文),intp65_en(英文),mtts(小语种,需配合小语种发音人使用),x(优化效果),默认为inpt65 intp65
text_type string 文本类型,可选值:text(普通格式文本),默认为text text

X-Param生成示例:

原始JSON串:
{
    "auf": "audio/L16;rate=16000",
    "aue": "raw",
    "voice_name": "xiaoyan",
    "speed": "50",
    "volume": "50",
    "pitch": "50",
    "engine_type": "intp65",
    "text_type": "text"
}
BASE64编码(即X-Param):
eyJhdWYiOiAiYXVkaW8vTDE2O3JhdGU9MTYwMDAiLCJhdWUiOiAicmF3Iiwidm9pY2VfbmFtZSI6ICJ4aWFveWFuIiwic3BlZWQiOiAiNTAiLCJ2b2x1bWUiOiAiNTAiLCJwaXRjaCI6ICI1MCIsImVuZ2luZV90eXBlIjogImludHA2NSIsInRleHRfdHlwZSI6ICJ0ZXh0In0=

在 Http Request Body 中配置以下参数:

参数 类型 必须 说明 示例
text string 待合成文本,使用utf-8编码,需urlencode,长度小于1000字节 科大讯飞是中国最大的智能语音技术提供商

返回值

需要根据 Content-type 的头部来确定是否服务端合成成功。

合成成功,响应 header 包含:

Content-type: audio/mpeg

sid: hts0000bb3f@ch3d5c059d83b3477200

响应 body 为音频数据,可写入文件保存,保存类型由入参的 aue 决定:

  • aue = raw, 音频文件保存类型为 wav
  • aue = lame, 音频文件保存类型为 mp3

合成出现错误,响应 header 包含:

Content-type: text/plain

响应 body 为 json 字符串,json 字段如下:

参数 类型 说明
code string 结果码(具体见错误码)
data string
desc string 描述
sid string 会话ID

其中 sid 字段主要用于 DEBUG 追查问题,如果出现问题,可以提供sid给讯飞技术人员帮助确认问题。

示例如下:

失败:

header:
    Content-Type:text/plain
body:
    {
        "code": "10106",
        "desc": "invalid parameter|invalid speed",
        "data": "",
        "sid": "hts0000bb3f@ch3d5c059d83b3477200"
    }

成功:

header:
    Content-Type:audio/mpeg
    Connection:keep-alive
    Cache-Control:no-cache
    sid:hts0000bb3f@ch3d5c059d83b3477200
body:
    音频数据(二进制数组)

调用示例

python脚本示例

说明:将脚本中 API_KEY, APPID, 换成相应的讯飞开放平台提供的 apiKey 和讯飞开放平台应用的 appid,并在脚本目录下新建 audio 文件夹用于保存合成后的音频。运行脚本,成功则音频保存在 audio 目录,失败则打印相应结果。

#-*- coding: utf-8 -*-
import requests
import re
import time
import hashlib
import base64
import struct

URL = "http://api.xfyun.cn/v1/service/v1/tts"
AUE = "raw"
APPID = ""
API_KEY = ""

def getHeader():
        curTime = str(int(time.time()))
        param = "{\"aue\":\""+AUE+"\",\"auf\":\"audio/L16;rate=16000\",\"voice_name\":\"xiaoyan\",\"engine_type\":\"intp65\"}"
        paramBase64 = base64.b64encode(param)
        m2 = hashlib.md5()
        m2.update(API_KEY + curTime + paramBase64)
        checkSum = m2.hexdigest()
        header ={
                'X-CurTime':curTime,
                'X-Param':paramBase64,
                'X-Appid':APPID,
                'X-CheckSum':checkSum,
                'X-Real-Ip':'127.0.0.1',
                'Content-Type':'application/x-www-form-urlencoded; charset=utf-8',
        }
        return header

def getBody(text):
        data = {'text':text}
        return data

def writeFile(file, content):
    with open(file, 'wb') as f:
        f.write(content)
    f.close()

r = requests.post(URL,headers=getHeader(),data=getBody("科大讯飞是中国最大的智能语音技术提供商"))
contentType = r.headers['Content-Type']
if contentType == "audio/mpeg":
    sid = r.headers['sid']
    if AUE == "raw":
        writeFile("audio/"+sid+".wav", r.content)
    else :
        writeFile("audio/"+sid+".mp3", r.content)
    print "success, sid = " + sid
else :
    print r.text 
Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2018-04-24 10:01:27

results matching ""

    No results matching ""