精华内容
下载资源
问答
  • 讯飞语音转文字demo

    2016-09-27 14:26:31
    讯飞语音转文字,识别率很高
  • 讯飞语音转文字

    千次阅读 2017-10-31 19:03:22
    //对参数2进行判断,如果为true,代表这个方法不会再回调,就把容器里的数据成字符串.拿来使用. if (b) { String result = mStringBuilder .toString() ; System. out .println( "话说完,最终的结果 : " + ...

    Button点击事件:

    public void but(View view) {
        //1.创建RecognizerDialog对象,第二参数就是一个初始化的监听,我们用不上就设置为null
        RecognizerDialog mDialog = new RecognizerDialog(this, null);
        //2.设置accent、language等参数
        mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");//设置为中文模式
        mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");//设置为普通话模式
        //若要将UI控件用于语义理解,必须添加以下参数设置,设置之后onResult回调返回将是语义理解
        //mDialog.setParameter("asr_sch", "1");
        //mDialog.setParameter("nlp_version", "2.0");
        //创建一个装每次解析数据的容器(你说话有停顿,解析就是一段一段的,而用容器就能拼接成一句话了)
        mStringBuilder = new StringBuilder();
        //3.设置回调接口,语音识别后,得到数据,做响应的处理.
        mDialog.setListener(new RecognizerDialogListener() {
            //识别成功执行 参数1 recognizerResult:识别出的结果,Json格式(用户可参见附录12.1)
            // 参数2 b:等于true时会话结束。方法才不会继续回调
            //一般情况下会通过onResults接口多次返回结果,完整的识别内容是多次结果的累加,(关于解析Json的代码可参见MscDemo中JsonParser类)
            public void onResult(RecognizerResult recognizerResult, boolean b) {
                //拿到讯飞识别的结果
                String resultString = recognizerResult.getResultString();
                System.out.println("讯飞识别的结果 " + resultString);
                //自定义解析bean数据的一个方法.用到了Gson,在项目里关联一下.
                String text = parseData(resultString);
                //容器装解析出来的数据
                mStringBuilder.append(text);
                //对参数2进行判断,如果为true,代表这个方法不会再回调,就把容器里的数据转成字符串.拿来使用.
                if (b) {
                    String result = mStringBuilder.toString();
                    System.out.println("话说完,最终的结果 : " + result);
                    editText.setText(result);
                }
            }
    
            @Override//识别失败执行 speechError:错误码
            public void onError(SpeechError speechError) {
            }
        });
        //4.显示dialog,接收语音输入
        mDialog.show();
    }
    
    private String parseData(String resultString) {
        //创建gson对象,记得要关联一下gson.jar包方可以使用.
        Gson gson = new Gson();
        //参数 1.String类型的json数据  参数 2.存放json数据对应的bean类
        XFBean xfBean = gson.fromJson(resultString, XFBean.class);
        //创建一个集合,用来存放bean类里的对象.
        ArrayList<XFBean.WS> ws = xfBean.ws;
        //创建一个容器,用来存放从每个集合里拿到的数据,使用StringBuilder效率更高
        StringBuilder stringBuilder = new StringBuilder();
        //使用高级for循环,取出特定属性的特有数据,装入StringBuilder中
        for (XFBean.WS w : ws) {
            String text = w.cw.get(0).w;
            stringBuilder.append(text);
        }
        //把容器内的数据转为字符串返回出去.
        return stringBuilder.toString();
    }


    展开全文
  • java讯飞语音转文字

    2018-07-04 17:27:24
    java代码实现使用讯飞语音第三方接口实现语音转文字功能
  • 讯飞输入法,1分钟400字,语音输入带你飞!语音准确,输入流畅,手写快捷,还有海量键盘皮肤、表情包、颜文字,是你必备的手机输入法。===多种输入方式===【方言语音输入】支持23种方言输入,语音识别超准的【智能...

    讯飞输入法,1分钟400字,语音输入带你飞!语音准确,输入流畅,手写快捷,还有海量键盘皮肤、表情包、颜文字,是你必备的手机输入法。0fe23cdfcef0642543d78f8c99dc8b9e.png===多种输入方式===【方言语音输入】支持23种方言输入,语音识别超准的【智能语音输入】中英混合语音免切换,高效输入更有智慧【拍照输入】智能OCR文字扫描识别,拍照取字让你快捷输入【手写输入】拼音键盘上可直接手写,不认识的字还有拼音标注【拼音输入】超大词库及时更新,输入候选更准确===BiuBiu神器,趣味聊天===【BiuBiu键盘】不用打字的戏精键盘,聊天怼人/花样表白/饭圈专属【BiuBiu趣聊】支持单字刷屏、说三遍、密语、中英夹杂等聊天模式【聊天气泡】自定义聊天气泡,群聊秀出真自我===个性功能,时尚输入===【键盘皮肤】游戏动漫时尚清新,多款个性皮肤任你挑【自定义皮肤】超多动画、按键、字体,更有盲打键盘DIY【音乐键盘】挑一首喜欢的音乐,打造一款会唱歌的键盘吧【个性字体】换个字体换个心情,从此打字萌萌哒

    展开全文
  • 讯飞语音转文字PHP tp6 demo讯飞官网没有PHP demo我是很诧异的改成了我需要的tp6 demo 讯飞官网没有PHP demo我是很诧异的 我php天下第一就这么没牌面吗 网上找了很久没找到 tp的demo,借鉴了 一位老哥的yii框架 demo ...

    讯飞官网没有PHP demo我是很诧异的

    我php天下第一就这么没牌面吗
    网上找了很久没找到 tp的demo,借鉴了
    一位老哥的yii框架 demo

    改成了我需要的tp6 demo

    <?php
    
    namespace app\index\controller;
    
    use app\lib\exception\BaseExcption;
    use think\Exception;
    use think\response\Json;
    
    class XunFei
    {
        const PREPARE_URL       = 'http://raasr.xfyun.cn/api/prepare';// 预处理 /prepare:
        const UPLOAD_URL        = 'http://raasr.xfyun.cn/api/upload';// 文件分片上传 /upload:
        const MERGE_URL         = 'http://raasr.xfyun.cn/api/merge';// 合并文件 /merge:
        const GET_PROGRESS_URL  = 'http://raasr.xfyun.cn/api/getProgress';// 查询处理进度 /getProgress:
        const GET_RESULT_URL    = 'http://raasr.xfyun.cn/api/getResult';// 获取结果 /getResult:
    
    //      测试表单页面
    //    public function index(){
    //        return view();
    //    }
    
        /**
         * 翻译接口
         *
         * @return Json
         * @throws BaseExcption
         */
        public function actionExec()
        {
            // 接收参数
            if (empty(request()->file('file'))) {
                throw new Exception('请求参数异常', 400);
            }
            //接收文件
            $file = request()->file('file');
            //获取文件类型信息
            $mime = $file->getOriginalMime();
            //文件上传兵返回文件名称
            $savename = \think\facade\Filesystem::disk('public')->putFile( 'xun_fei', $file);
            if(!$savename){
                throw new Exception('文件上传失败');
            }
            $file =  'storage/' . $savename;
            //讯飞语音转文字密钥
            $appId = env('xunfei.app_id');
            $secretKey = env('xunfei.app_key');
    
            $prepareData = static::prepare($appId, $secretKey, $file);
            if ($prepareData['ok'] != 0) {
                throw new Exception('prepare失败');
            }
    
            $taskId = $prepareData['data'];
    
            $uploadData = static::upload($appId, $secretKey, $file, $mime, $taskId);
            if ($uploadData['ok'] != 0) {
                throw new Exception('upload失败');
            }
    
            $mergeData = static::merge($appId, $secretKey, $taskId);
    
            if ($mergeData['ok'] != 0) {
                throw new Exception('merge失败');
            }
    
            $num = 1;
    
            //限定转写次数
            start:
            $getProgressData = static::getProgress($appId, $secretKey, $taskId);
    
            if ($getProgressData['ok'] != 0) {
                throw new Exception('getProgress失败');
            }
            $statusData = json_decode($getProgressData['data'], true);
    
            if ($statusData['status'] != 9) {
                if ($num >= 10) {
                    throw new Exception('转写时间过长');
                }
                $num++;
                sleep(1);
                goto start;
            }
    
            $getResultData = static::getResult($appId, $secretKey, $taskId);
            if ($getResultData['ok'] != 0) {
                throw new Exception('getResult失败');
            }
            //分词数组
            $data = json_decode($getResultData['data'],true);
            //拼接分词
            $text = '';
            foreach ($data as $v) {
                $text.= $v['onebest'];
            }
    
            return json(['code'=>0,'msg'=>'ok','data'=>$text]);
        }
    
    
        /**
         * 预处理
         *
         * @param $appId
         * @param $secretKey
         * @param $file
         * @return mixed
         */
        public static function prepare($appId, $secretKey, $file)
        {
            $fileInfo = pathinfo($file);
            $ts = time();
    
            $data = [
                'app_id' => (string)$appId,
                'signa' => (string)static::getSinga($appId, $secretKey, $ts),
                'ts' => (string)$ts,
                'file_len' => (string)filesize($file),
                'file_name' => (string)$fileInfo['basename'],
                'slice_num' => 1,
                'has_participle' => (string)"false",//转写结果是否包含分词信息
            ];
    
            $data = http_build_query($data);
    
            $header = [
                'Content-Type: application/x-www-form-urlencoded; charset=UTF-8'
            ];
    
            $res = static::curlPost(static::PREPARE_URL, $data, $header);
    
            $resultData = json_decode($res, true);
    
            return $resultData;
        }
    
        /**
         * 上传文件
         *
         * @param $appId
         * @param $secretKey
         * @param $file
         * @param $taskId
         * @return mixed
         */
        public static function upload($appId, $secretKey, $file, $mime, $taskId)
        {
            $ts = time();
            $curlFile = curl_file_create(
                $file,
                $mime,
                pathinfo(
                    $file,
                    PATHINFO_BASENAME
                )
            );
    
            $data = [
                'app_id' => (string)$appId,
                'signa' => (string)static::getSinga($appId, $secretKey, $ts),
                'ts' => (string)$ts,
                'task_id' => $taskId,
                'slice_id' => "aaaaaaaaaa",
                'content' => $curlFile,
            ];
    
            $header = [
                "Content-Type: multipart/form-data"
            ];
    
            $res = static::curlPost(static::UPLOAD_URL, $data, $header);
    
            $resultData = json_decode($res, true);
    
            return $resultData;
        }
    
        /**
         * 合并文件
         *
         * @param $appId
         * @param $secretKey
         * @param $taskId
         * @return mixed
         */
        public static function merge($appId, $secretKey, $taskId)
        {
            $ts = time();
    
            $data = [
                'app_id' => (string)$appId,
                'signa' => (string)static::getSinga($appId, $secretKey, $ts),
                'ts' => (string)$ts,
                'task_id' => $taskId,
            ];
            $data = http_build_query($data);
            $header = [
                "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
            ];
    
            $res = static::curlPost(static::MERGE_URL, $data, $header);
    
            $resultData = json_decode($res, true);
    
            return $resultData;
    
        }
    
        /**
         * 查询处理进度
         *
         * @param $appId
         * @param $secretKey
         * @param $taskId
         * @return mixed
         */
        public static function getProgress($appId, $secretKey, $taskId)
        {
            $ts = time();
    
            $data = [
                'app_id' => (string)$appId,
                'signa' => (string)static::getSinga($appId, $secretKey, $ts),
                'ts' => (string)$ts,
                'task_id' => $taskId,
            ];
    
            $data = http_build_query($data);
    
            $header = [
                "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
            ];
    
            $res = static::curlPost(static::GET_PROGRESS_URL, $data, $header);
    
            $resultData = json_decode($res, true);
    
            return $resultData;
        }
    
        /**
         * 获取转写结果
         *
         * @param $appId
         * @param $secretKey
         * @param $taskId
         * @return mixed
         */
        public static function getResult($appId, $secretKey, $taskId)
        {
            $ts = time();
    
            $data = [
                'app_id' => (string)$appId,
                'signa' => (string)static::getSinga($appId, $secretKey, $ts),
                'ts' => (string)$ts,
                'task_id' => $taskId,
            ];
    
            $data = http_build_query($data);
    
            $header = [
                "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
            ];
    
            $res = static::curlPost(static::GET_RESULT_URL, $data, $header);
    
            $resultData = json_decode($res, true);
    
            return $resultData;
        }
    
    
        /**
         * curl
         *
         * @param $url
         * @param string $postData
         * @param string $header
         * @return bool|string
         */
        public static function curlPost($url, $postData = '', $header = '')
        {
            //初始化
            $curl = curl_init(); //用curl发送数据给api
            curl_setopt($curl, CURLOPT_POST, true);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_URL, $url);
    
            if (!empty($header)) {
                curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
            }
    
            if (!empty($postData)) {
                curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
            }
    
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            $response = curl_exec($curl);
            //关闭URL请求
            curl_close($curl);
            //显示获得的数据
            return $response;
        }
    
        /**
         * 获取signa
         *
         * @param $appId
         * @param $secretKey
         * @param $ts
         * @return string
         */
        public static function getSinga($appId, $secretKey, $ts)
        {
            $md5Str = $appId . $ts;
    
            $md5 = MD5($md5Str);
    
            $md5 = mb_convert_encoding($md5, "UTF-8");
    
            // 相当于java的HmacSHA1方法
            $signa = base64_encode(hash_hmac("sha1", $md5, $secretKey, true));
    
            return $signa;
        }
    
    }
    
    

    #githup地址 https://github.com/xy6409068/xunfei_tp6

    展开全文
  • 本软件可以在手机上把语音识别转换成文字,也有离线朗读功能,采用中科大讯飞语音技术,朗读技术媲美真人。软件短小精悍,占用很少的手机内存。
  • 我找了找, 发现网上很多都是收费软件,而且转换结果不尽人意., 最后决定使用讯飞服务来完成转换, 讯飞语音转写api支持大文件, 转换结果也十分准确, 感谢讯飞及制作demo的大佬yanmeng2, 嘻嘻 1先注册账号, 获取key… ...

    因为有朋友需要将录音转成文字, 给我的是m4a格式, 我给转成txt发给他的.

    我找了找, 发现网上很多都是收费软件,而且转换结果不尽人意., 最后决定使用讯飞服务来完成转换, 讯飞语音转写api支持大文件, 转换结果也十分准确, 感谢讯飞及制作demo的大佬yanmeng2, 嘻嘻

    1先注册账号, 获取key…

    在讯飞开放平台(https://passport.xfyun.cn/login)注册账号, 然后创建应用.
    再去新用户送5小时转换时间, 需要去领取 (http://www.xfyun.cn/services/lfasr).
    将领取的奖励选择到创建出的应用中
    进入应用(如下页面)拿到需要的参数
    在这里插入图片描述

    2 修改代码, 将值输入并确定,

    在这里插入图片描述

    3 执行

    打开cmd, 输入python D:\workspace\python\weblfasr_python3_demo\weblfasr_python3_demo.py
    在这里插入图片描述

    执行完毕后, 就可以在 代码设置的to_file中看到结果了

    源码:

    # -*- coding: utf-8 -*-
    # 
    #   author: yanmeng2
    # 
    # 非实时转写调用demo
    
    import base64
    import hashlib
    import hmac
    import json
    import os
    import time
    
    import requests
    
    lfasr_host = 'http://raasr.xfyun.cn/api'
    
    # 请求的接口名
    api_prepare = '/prepare'
    api_upload = '/upload'
    api_merge = '/merge'
    api_get_progress = '/getProgress'
    api_get_result = '/getResult'
    # 文件分片大小10M
    file_piece_sice = 10485760
    
    # ——————————————————转写可配置参数————————————————
    # 参数可在官网界面(https://doc.xfyun.cn/rest_api/%E8%AF%AD%E9%9F%B3%E8%BD%AC%E5%86%99.html)查看,根据需求可自行在gene_params方法里添加修改
    # 转写类型
    lfasr_type = 0
    # 是否开启分词
    has_participle = 'false'
    has_seperate = 'true'
    # 多候选词个数
    max_alternatives = 0
    # 子用户标识
    suid = ''
    
    
    class SliceIdGenerator:
        """slice id生成器"""
    
        def __init__(self):
            self.__ch = 'aaaaaaaaa`'
    
        def getNextSliceId(self):
            ch = self.__ch
            j = len(ch) - 1
            while j >= 0:
                cj = ch[j]
                if cj != 'z':
                    ch = ch[:j] + chr(ord(cj) + 1) + ch[j + 1:]
                    break
                else:
                    ch = ch[:j] + 'a' + ch[j + 1:]
                    j = j - 1
            self.__ch = ch
            return self.__ch
    
    
    class RequestApi(object):
        def __init__(self, appid, secret_key, upload_file_path, to_file):
            self.appid = appid
            self.secret_key = secret_key
            self.upload_file_path = upload_file_path
            self.to_file = to_file
    
        # 根据不同的apiname生成不同的参数,本示例中未使用全部参数您可在官网(https://doc.xfyun.cn/rest_api/%E8%AF%AD%E9%9F%B3%E8%BD%AC%E5%86%99.html)查看后选择适合业务场景的进行更换
        def gene_params(self, apiname, taskid=None, slice_id=None):
            appid = self.appid
            secret_key = self.secret_key
            upload_file_path = self.upload_file_path
            ts = str(int(time.time()))
            m2 = hashlib.md5()
            m2.update((appid + ts).encode('utf-8'))
            md5 = m2.hexdigest()
            md5 = bytes(md5, encoding='utf-8')
            # 以secret_key为key, 上面的md5为msg, 使用hashlib.sha1加密结果为signa
            signa = hmac.new(secret_key.encode('utf-8'), md5, hashlib.sha1).digest()
            signa = base64.b64encode(signa)
            signa = str(signa, 'utf-8')
            file_len = os.path.getsize(upload_file_path)
            file_name = os.path.basename(upload_file_path)
            param_dict = {}
    
            if apiname == api_prepare:
                # slice_num是指分片数量,如果您使用的音频都是较短音频也可以不分片,直接将slice_num指定为1即可
                slice_num = int(file_len / file_piece_sice) + (0 if (file_len % file_piece_sice == 0) else 1)
                param_dict['app_id'] = appid
                param_dict['signa'] = signa
                param_dict['ts'] = ts
                param_dict['file_len'] = str(file_len)
                param_dict['file_name'] = file_name
                param_dict['slice_num'] = str(slice_num)
            elif apiname == api_upload:
                param_dict['app_id'] = appid
                param_dict['signa'] = signa
                param_dict['ts'] = ts
                param_dict['task_id'] = taskid
                param_dict['slice_id'] = slice_id
            elif apiname == api_merge:
                param_dict['app_id'] = appid
                param_dict['signa'] = signa
                param_dict['ts'] = ts
                param_dict['task_id'] = taskid
                param_dict['file_name'] = file_name
            elif apiname == api_get_progress or apiname == api_get_result:
                param_dict['app_id'] = appid
                param_dict['signa'] = signa
                param_dict['ts'] = ts
                param_dict['task_id'] = taskid
            return param_dict
    
        # 请求和结果解析,结果中各个字段的含义可参考:https://doc.xfyun.cn/rest_api/%E8%AF%AD%E9%9F%B3%E8%BD%AC%E5%86%99.html
        def gene_request(self, apiname, data, files=None, headers=None):
            response = requests.post(lfasr_host + apiname, data=data, files=files, headers=headers)
            result = json.loads(response.text)
            if result["ok"] == 0:
                print("{} success:".format(apiname) + str(result))
                return result
            else:
                print("{} error:".format(apiname) + str(result))
                exit(0)
                return result
    
        # 预处理
        def prepare_request(self):
            return self.gene_request(apiname=api_prepare,
                                     data=self.gene_params(api_prepare))
    
        # 上传
        def upload_request(self, taskid, upload_file_path):
            file_object = open(upload_file_path, 'rb')
            try:
                index = 1
                sig = SliceIdGenerator()
                while True:
                    content = file_object.read(file_piece_sice)
                    if not content or len(content) == 0:
                        break
                    files = {
                        "filename": self.gene_params(api_upload).get("slice_id"),
                        "content": content
                    }
                    response = self.gene_request(api_upload,
                                                 data=self.gene_params(api_upload, taskid=taskid,
                                                                       slice_id=sig.getNextSliceId()),
                                                 files=files)
                    if response.get('ok') != 0:
                        # 上传分片失败
                        print('upload slice fail, response: ' + str(response))
                        return False
                    print('upload slice ' + str(index) + ' success')
                    index += 1
            finally:
                'file index:' + str(file_object.tell())
                file_object.close()
            return True
    
        # 合并
        def merge_request(self, taskid):
            return self.gene_request(api_merge, data=self.gene_params(api_merge, taskid=taskid))
    
        # 获取进度
        def get_progress_request(self, taskid):
            return self.gene_request(api_get_progress, data=self.gene_params(api_get_progress, taskid=taskid))
    
        # 获取结果
        def get_result_request(self, taskid):
            return self.gene_request(api_get_result, data=self.gene_params(api_get_result, taskid=taskid))
    
        def all_api_request(self):
            # 1. 预处理
            pre_result = self.prepare_request()
            taskid = pre_result["data"]
            # 2 . 分片上传
            self.upload_request(taskid=taskid, upload_file_path=self.upload_file_path)
            # 3 . 文件合并
            self.merge_request(taskid=taskid)
            # 4 . 获取任务进度
            while True:
                # 每隔20秒获取一次任务进度
                progress = self.get_progress_request(taskid)
                progress_dic = progress
                if progress_dic['err_no'] != 0 and progress_dic['err_no'] != 26605:
                    print('task error: ' + progress_dic['failed'])
                    return
                else:
                    data = progress_dic['data']
                    task_status = json.loads(data)
                    if task_status['status'] == 9:
                        print('task ' + taskid + ' finished')
                        break
                    print('The task ' + taskid + ' is in processing, task status: ' + str(data))
    
                # 每次获取进度间隔20S
                time.sleep(20)
            # 5 . 获取结果
            res = self.get_result_request(taskid=taskid)
            r = json.loads(res["data"])
            with open(self.to_file,'w', encoding='utf-8') as file_obj:
                for iterating_var in r:
                    file_obj.write(iterating_var["onebest"])
                    file_obj.write("\n")
    
    
    # 注意:如果出现requests模块报错:"NoneType" object has no attribute 'read', 请尝试将requests模块更新到2.20.0或以上版本(本demo测试版本为2.20.0)
    # 输入讯飞开放平台的appid,secret_key和待转写的文件路径
    if __name__ == '__main__':
        api = RequestApi(
            appid="xxx",
            secret_key="xxx",
            upload_file_path=r"C:/Users/DELL/Desktop/录音文件/20201104_163233.m4a",
            to_file=r"C:/Users/DELL/Desktop/录音文件/20201104_163233.txt"
        )
        api.all_api_request()
    
    
    展开全文
  • 基于讯飞语音转文字

    千次阅读 2017-05-29 19:43:23
    layout_width="match_parent" android:layout_height="wrap_content" android:hint="显示内容" /> android:id="@+id/btn_click" android:text="语音" android:textSize="30sp" android:layout_width="140dp" android...
  • 今天整了一下语音转文字(SDK)方式 写了个demo 总体来说还不错 还算顺利 记录一下踩的小坑 问题也都不打 讯飞官网提供的demo可以说很全面了 包括整体流程 工具类 生成各种参数的方法也都很全 我是一个1年经验的小白...
  • } //讯飞语音转文字密钥 $appId = ''; $secretKey = ''; $prepareData = static::prepare($appId, $secretKey, $file); if ($prepareData['ok'] != 0) { throw new Exception('prepare失败'); } $taskId = $...
  • 有时需要把讯飞语音识别结果成srt字幕,通过下面的java代码即可实现。 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.io.*; import java.text.SimpleDateFormat;...
  • 然后就就是最后一部了,将mp3得音频文件转换为文字,我这里用的是讯飞得技术,当然百度得也可以, 其实整个需求得这个流程已经完成了,但是不得不说里面遇到得坑,由于是渣渣,除了人们总说的,转换为mp3得时候会报N...
  • 讯飞语音注册一个账号申请免费的语音转文字功能 写的一个小Demo备用学习 在讯飞语音注册一个账号申请免费的语音转文字功能 写的一个小Demo备用学习
  • 讯飞语音——文字转换语音

    千次阅读 2017-09-18 14:04:33
    1.首先在讯飞开放平台注册账号 http://www.xfyun.cn/?ch=bdtg2.在控制台添加应用 获得APPID 然后添加应用 之后就是下载SDK了 在组合服务下载SDK中下载 下载好后解压出来得到以下文件 把libs下的资源放入到你的...
  • 讯飞语音语音转文字识别功能

    千次阅读 2018-06-02 15:25:20
    下面,简单介绍下讯飞语音听写功能的强大和集成 一、进入讯飞语音官网:http://www.xfyun.cn/?ch=bdtg 然后完成注册登录步骤,在“产品服务”中有个“语音听写”功能,我们点击进入,往下面拉会有各个端的开发...
  • 讯飞语音* 在讯飞语音开发者平台上http://www.xfyun.cn/doccenter/newer具体准备工作按照开发文档操作。注意的是创建一个项目,appid和adk是一一对应的* 在这里,写了一个语音转化为文本,文本转化为语音的工具类...
  • uniapp语音识别(讯飞语音转文字

    千次阅读 2020-09-23 15:24:13
    ☞ 常见应用: 游戏界面文字语音、商城导航栏的语音输入搜索框、聊天界面的语音文字...(如果用不了讯飞语音,可换百度语音,自己去看接入文档) 进入项目根目录下的 manifest.json -> App模块配置->speech 勾选

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 365
精华内容 146
关键字:

讯飞语音转文字