语音文件转换成文档(基于阿里云服务)

/**

** 作用:语音文件转换成文本

** 注释:1。转换方式采用轮询   2。需要添加定时任务

 */

require_once FCPATH.'/vendor/autoload.php';

use AlibabaCloud\Client\AlibabaCloud;

use AlibabaCloud\Client\Exception\ClientException;

use AlibabaCloud\Client\Exception\ServerException;

class Ali_nlsfiletrans{

    private $appKey = '';

    private $key_status_text = 'StatusText';

    private $status_success = "SUCCESS";

    private $key_task_id = "TaskId";

    private $status_running = "RUNNING";

    private $status_queueing = "QUEUEING";

     /***********************正式请求开始******************************/

    //获取数据

    public function getfile($fileLink){

        //获取任务id

        $taskId = $this->submitFileTransRequest($fileLink);

        //任务id判断

        if($taskId){

            //获取查询数据

            $result = $this->getFileTransResult($taskId);

            if ($result != NULL) {

                //录音文件识别结果查询成功(添加自己的业务)

                return $result;

            }else {

                //录音文件识别结果查询失败(添加自己的业务)

                return '';

            }

        }

    }

    //获取任务id

    function submitFileTransRequest($fileLink) {

        //组装请求数据数组

        $taskArr = array('appkey' => $this->appKey, 'file_link' => $fileLink, 'version' => "4.0", 'enable_words' => FALSE);

        $task = json_encode($taskArr);

        //提交请求,返回服务端的响应。

        try {

            $submitTaskResponse = AlibabaCloud::nlsFiletrans()->v20180817()->submitTask()->withTask($task)->request();

            // 获取录音文件识别请求任务的ID,以供识别结果查询使用。

            $taskId = NULL;

            $statusText = $submitTaskResponse[$this->key_status_text];

            if (strcmp($this->status_success, $statusText) == 0) {

                $taskId = $submitTaskResponse[$this->key_task_id];

            }

            return $taskId;

        } catch (ClientException $exception) {

            // 获取错误消息

            print_r($exception->getErrorMessage());

        } catch (ServerException $exception) {

            // 获取错误消息

            print_r($exception->getErrorMessage());

        }

    }

    //获取转换文件并把数据入库

    function getFileTransResult($taskId) {

        //初始化结果对象

        $result = NULL;

        //查询转换结果

        while (TRUE) {

            try {

                $getResultResponse = AlibabaCloud::nlsFiletrans()

                    ->v20180817()->getTaskResult()->withTaskId($taskId)

                    ->request();

                $statusText= $getResultResponse[$this->key_status_text];

                if (strcmp($this->status_running, $statusText) == 0 || strcmp($this->status_queueing, $statusText) == 0) {

                    // 继续轮询(没有得到返回结果:转换中或者转换失败)

                    sleep(10);

                }else {

                    if (strcmp($this->status_success, $statusText) == 0)    {

                        $result = $getResultResponse;

                    }

                    // 退出轮询

                    break;

                }

            } catch (ClientException $exception) {

                //异常抛出

                print_r($exception->getErrorMessage());

            } catch (ServerException $exception) {

                //异常抛出

                print_r($exception->getErrorMessage());

            }

        }

        return $result;

    }

    /***********************正式请求结束*********************************/

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值