WokerTask/extend/IFlytek/Xfyun/Speech/Config/IseConfig.php

266 lines
7.9 KiB
PHP
Raw Normal View History

2023-12-27 14:06:33 +08:00
<?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的取值不同对返回结果有影响。
* plev0(给出全部信息汉语包含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;
}
}