266 lines
7.9 KiB
PHP
266 lines
7.9 KiB
PHP
<?php
|
||
|
||
/**
|
||
* Copyright 1999-2021 iFLYTEK Corporation
|
||
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
|
||
namespace IFlytek\Xfyun\Speech\Config;
|
||
|
||
use IFlytek\Xfyun\Core\Traits\ArrayTrait;
|
||
use IFlytek\Xfyun\Core\Traits\JsonTrait;
|
||
use IFlytek\Xfyun\Core\Config\ConfigInterface;
|
||
|
||
/**
|
||
* 语音评测配置参数类
|
||
*
|
||
* @author guizheng@iflytek.com
|
||
*/
|
||
class IseConfig implements ConfigInterface
|
||
{
|
||
use ArrayTrait;
|
||
use JsonTrait;
|
||
|
||
/**
|
||
* @var string 服务类型指定
|
||
* ise: 开放评测
|
||
* 默认'ise'
|
||
*/
|
||
private $sub;
|
||
|
||
/**
|
||
* @var string 评测语种
|
||
* 中文:cn_vip,英文:en_vip
|
||
* 默认'cn_vip'
|
||
*/
|
||
private $ent;
|
||
|
||
/**
|
||
* @var string 评测题型
|
||
* 中文题型:
|
||
* read_syllable(单字朗读,汉语专有)
|
||
* read_word(词语朗读)
|
||
* read_sentence(句子朗读)
|
||
* read_chapter(篇章朗读)
|
||
* 英文题型:
|
||
* read_word(词语朗读)
|
||
* read_sentence(句子朗读)
|
||
* read_chapter(篇章朗读)
|
||
* simple_expression(英文情景反应)
|
||
* read_choice(英文选择题)
|
||
* topic(英文自由题)
|
||
* retell(英文复述题)
|
||
* picture_talk(英文看图说话)
|
||
* oral_translation(英文口头翻译)
|
||
* 默认read_sentence
|
||
*/
|
||
private $category;
|
||
|
||
/**
|
||
* @var int 上传音频时来区分音频的状态
|
||
* 1/2/4
|
||
* 默认1
|
||
*/
|
||
private $aus;
|
||
|
||
/**
|
||
* @var string 用来区分数据上传阶段
|
||
* ssb:参数上传阶段
|
||
* ttp:文本上传阶段(ttp_skip=true时该阶段可以跳过,直接使用text字段中的文本)
|
||
* auw:音频上传阶段
|
||
* 必传
|
||
*/
|
||
private $cmd;
|
||
|
||
/**
|
||
* @var string 待评测文本
|
||
* 需要加utf8bom头:'\uFEFF' + text
|
||
*/
|
||
private $text;
|
||
|
||
/**
|
||
* @var string 带评测文本编码
|
||
* utf-8/gbk
|
||
* 默认utf-8
|
||
*/
|
||
private $tte;
|
||
|
||
/**
|
||
* @var boolean 跳过ttp直接使用text中的文本进行评测
|
||
* true/false
|
||
* 默认true
|
||
*/
|
||
private $ttpSkip;
|
||
|
||
/**
|
||
* @var string 拓展能力(生效条件ise_unite="1", rst="entirety")
|
||
* 多维度分信息显示(准确度分、流畅度分、完整度打分):extra_ability值为multi_dimension,字词句篇均适用,如选多个能力,用分号;隔开。例如:extra_ability=syll_phone_err_msg;pitch;multi_dimension
|
||
* 单词基频信息显示(基频开始值、结束值):extra_ability值为pitch ,仅适用于单词和句子题型
|
||
* 音素错误信息显示(声韵、调型是否正确):extra_ability值为syll_phone_err_msg,字词句篇均适用,如选多个能力,用分号;隔开。例如:extra_ability=syll_phone_err_msg;pitch;multi_dimension
|
||
*/
|
||
private $extraAbility;
|
||
|
||
/**
|
||
* @var string 音频格式
|
||
* raw: 未压缩的pcm格式音频或wav(如果用wav格式音频,建议去掉头部)
|
||
* lame: mp3格式音频
|
||
* speex-wb;7: 讯飞定制speex格式音频
|
||
* 默认speex-wb
|
||
*/
|
||
private $aue;
|
||
|
||
/**
|
||
* @var string 音频采样率
|
||
* 默认 audio/L16;rate=16000
|
||
*/
|
||
private $auf;
|
||
|
||
/**
|
||
* @var string 返回结果格式
|
||
* utf8/gbk
|
||
* 默认utf8
|
||
*/
|
||
private $rstcd;
|
||
|
||
/**
|
||
* @var string 评测人群指定
|
||
* adult(成人群体,不设置群体参数时默认为成人)
|
||
* youth(中学群体)
|
||
* pupil(小学群体,中文句、篇题型设置此参数值会有accuracy_score得分的返回)
|
||
* 默认adult
|
||
*/
|
||
private $group;
|
||
|
||
/**
|
||
* @var string 设置评测的打分及检错松严门限(仅中文引擎支持)
|
||
* easy:容易
|
||
* common:普通
|
||
* hard:困难
|
||
*/
|
||
private $checkType;
|
||
|
||
/**
|
||
* @var string 设置评测的学段参数 (仅中文题型:中小学的句子、篇章题型支持)
|
||
* junior(1,2年级)
|
||
* middle(3,4年级)
|
||
* senior(5,6年级)
|
||
*/
|
||
private $grade;
|
||
|
||
/**
|
||
* @var string 评测返回结果与分制控制(评测返回结果与分制控制也会受到ise_unite与plev参数的影响)
|
||
* 完整:entirety(默认值)
|
||
* 中文百分制推荐传参(rst="entirety"且ise_unite="1"且配合extra_ability参数使用)
|
||
* 英文百分制推荐传参(rst="entirety"且ise_unite="1"且配合extra_ability参数使用)
|
||
* 精简:plain(评测返回结果将只有总分)
|
||
*/
|
||
private $rst;
|
||
|
||
/**
|
||
* @var string 返回结果控制
|
||
* 0:不控制(默认值)
|
||
* 1:控制(extra_ability参数将影响全维度等信息的返回)
|
||
*/
|
||
private $iseUnite;
|
||
|
||
/**
|
||
* @var string 在rst="entirety"(默认值)且ise_unite="0"(默认值)的情况下plev的取值不同对返回结果有影响。
|
||
* plev:0(给出全部信息,汉语包含rec_node_type、perr_msg、fluency_score、phone_score信息的返回;英文包含accuracy_score、serr_msg、 syll_accent、fluency_score、standard_score、pitch信息的返回)
|
||
*/
|
||
private $plev;
|
||
|
||
public function __construct($config)
|
||
{
|
||
$config += [
|
||
'ent' => 'cn_vip',
|
||
'category' => 'read_sentence',
|
||
'aus' => 1,
|
||
'cmd' => 'ssb',
|
||
'text' => '',
|
||
'tte' => 'utf-8',
|
||
'ttp_skip' => true,
|
||
'extra_ability' => null,
|
||
'aue' => 'raw',
|
||
'rstcd' => 'utf8',
|
||
'group' => 'adult',
|
||
'check_type' => 'common',
|
||
'grade' => 'middle',
|
||
'rst' => 'entirety',
|
||
'ise_unite' => '0',
|
||
'plev' => '0'
|
||
];
|
||
|
||
$this->sub = 'ise';
|
||
$this->ent = $config['ent'];
|
||
$this->category = $config['category'];
|
||
$this->aus = $config['aus'];
|
||
$this->cmd = $config['cmd'];
|
||
$this->text = chr(239) . chr(187) . chr(191) . $config['text'];
|
||
$this->tte = $config['tte'];
|
||
$this->ttpSkip = $config['ttp_skip'];
|
||
$this->extraAbility = $config['extra_ability'];
|
||
$this->aue = $config['aue'];
|
||
$this->rstcd = $config['rstcd'];
|
||
$this->group = $config['group'];
|
||
$this->checkType = $config['check_type'];
|
||
$this->grade = $config['grade'];
|
||
$this->rst = $config['rst'];
|
||
$this->iseUnite = $config['ise_unite'];
|
||
$this->plev = $config['plev'];
|
||
}
|
||
|
||
/**
|
||
* 去除null项后返回数组形式
|
||
*
|
||
* @return array
|
||
*/
|
||
public function toArray()
|
||
{
|
||
return $this->removeNull([
|
||
'sub' => $this->sub,
|
||
'ent' => $this->ent,
|
||
'category' => $this->category,
|
||
'aus' => $this->aus,
|
||
'cmd' => $this->cmd,
|
||
'text' => $this->text,
|
||
'tte' => $this->tte,
|
||
'ttp_skip' => $this->ttpSkip,
|
||
'extra_ability' => $this->extraAbility,
|
||
'aue' => $this->aue,
|
||
'rstcd' => $this->rstcd,
|
||
'group' => $this->group,
|
||
'check_type' => $this->checkType,
|
||
'grade' => $this->grade,
|
||
'rst' => $this->rst,
|
||
'ise_unite' => $this->iseUnite,
|
||
'plev' => $this->plev
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 返回toArray的Json格式
|
||
*
|
||
* @return string
|
||
*/
|
||
public function toJson()
|
||
{
|
||
return $this->jsonEncode($this->toArray());
|
||
}
|
||
|
||
public function setText($text)
|
||
{
|
||
$this->text = chr(239) . chr(187) . chr(191) . $text;
|
||
}
|
||
}
|