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

266 lines
7.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}