提供各种语音能力的PHPSDK。
composer require iflytekop/xfyun-speech
如果下载失败,请使用如下命令更换国内源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
<?php
include './vendor/autoload.php';
// 设置合成参数
$ttsConfig = [
'aue' => 'lame'
//...
];
// 这里的$app_id、$api_key、$api_secret是在开放平台控制台获得
$client = new IFlytek\Xfyun\Speech\SpeechClient($app_id, $api_key, $api_secret);
// 返回格式为音频文件的二进制数组,可以直接通过file_put_contents存入本地文件
$content = $client->ttsRequest('欢迎使用科大讯飞语音能力,让我们一起用人工智能改变世界')->getBody()->getContents();
更详细请参见Demo
参数名 | 类型 | 必传 | 描述 | 示例 |
---|---|---|---|---|
aue | string | 是 | 音频编码,可选值: raw:未压缩的pcm lame:mp3 (当aue=lame时需传参sfl=1) speex-org-wb;7: 标准开源speex(for speex_wideband,即16k)数字代表指定压缩等级(默认等级为8) speex-org-nb;7: 标准开源speex(for speex_narrowband,即8k)数字代表指定压缩等级(默认等级为8) speex;7:压缩格式,压缩等级1-10,默认为7(8k讯飞定制speex) speex-wb;7:压缩格式,压缩等级1-10,默认为7(16k讯飞定制speex) |
"raw" "speex-org-wb;7" 数字代表指定压缩等级(默认等级为8),数字必传 标准开源speex编码以及讯飞定制speex说明请参考音频格式说明 |
sfl | int | 否 | 需要配合aue=lame使用,开启流式返回 mp3格式音频 取值:1 开启 |
1 |
auf | string | 否 | 音频采样率,可选值: audio/L16;rate=8000:合成8K 的音频 audio/L16;rate=16000:合成16K 的音频 auf不传值:合成16K 的音频 |
"audio/L16;rate=16000" |
vcn | string | 是 | 发音人,可选值:请到控制台添加试用或购买发音人,添加后即显示发音人参数值 | "xiaoyan" |
speed | int | 否 | 语速,可选值:[0-100],默认为50 | 50 |
volume | int | 否 | 音量,可选值:[0-100],默认为50 | 50 |
pitch | int | 否 | 音高,可选值:[0-100],默认为50 | 50 |
bgs | int | 否 | 合成音频的背景音 0:无背景音(默认值) 1:有背景音 |
0 |
tte | string | 否 | 文本编码格式 GB2312 GBK BIG5 UNICODE(小语种必须使用UNICODE编码,合成的文本需使用utf16小端的编码方式 GB18030 UTF8 |
"UTF8" |
reg | string | 否 | 设置英文发音方式: 0:自动判断处理,如果不确定将按照英文词语拼写处理(缺省) 1:所有英文按字母发音 2:自动判断处理,如果不确定将按照字母朗读 默认按英文单词发音 |
"2" |
rdn | string | 否 | 合成音频数字发音方式 0:自动判断(默认值) 1:完全数值 2:完全字符串 3:字符串优先 |
"0" |
<?php
include './vendor/autoload.php';
// 设置转写参数
$lfasrConfig = [
'hasParticiple' => 'true'
//...
];
// 这里的$app_id、$secret_key是在开放平台控制台获得
$client = new IFlytek\Xfyun\Speech\LfasrClient($app_id, $secret_key, $lfasrConfig);
// $filePath为待转写的本地文件路径,返回taskId作为后续查询进度、获取结果操作的参数
$taskId = $client->combineUpload($filePath);
// 查询进度,json格式
$progress = $client->getProgress($taskId)->getBody()->getContents();
// 获取结果,json格式
$result = $client->getResult($taskId)->getBody()->getContents();
更详细请参见Demo
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
lfasrType | string | 否 | 转写类型,默认 0 0: (标准版,格式: wav,flac,opus,mp3,m4a) 2: (电话版,已取消) |
0 |
hasParticiple | string | 否 | 转写结果是否包含分词信息 | false或true, 默认false |
maxAlternatives | string | 否 | 转写结果中最大的候选词个数 | 默认:0,最大不超过5 |
speakerNumber | string | 否 | 发音人个数,可选值:0-10,0表示盲分 注:发音人分离目前还是测试效果达不到商用标准,如测试无法满足您的需求,请慎用该功能。 |
默认:2(适用通话时两个人对话的场景) |
hasSeperate | string | 否 | 转写结果中是否包含发音人分离信息 | false或true,默认为false |
roleType | string | 否 | 支持两种参数 1: 通用角色分离 2: 电话信道角色分离(适用于speaker_number为2的说话场景) |
该字段只有在开通了角色分离功能的前提下才会生效,正确传入该参数后角色分离效果会有所提升。 如果该字段不传,默认采用 1 类型 |
language | string | 否 | 语种 cn:中英文&中文(默认) en:英文(英文不支持热词) |
cn |
pd | string | 否 | 垂直领域个性化参数: 法院: court 教育: edu 金融: finance 医疗: medical 科技: tech |
设置示例:prepareParam.put("pd", "edu") pd为非必须设置参数,不设置参数默认为通用 |