大发pk10

    大发pk10休馆网上平台 AIKit HarmonyOS SDK 连结规范

    SDK Version: 1.0.0-beta1 Updated: 2020.10.15

    # 1. 概述

    尊敬的开发者朋友,欢迎您选择大发pk10开放平台。本文档旨在帮助HarmonyOS 应用开发者在程序中快速接入AIKit HarmonyOS SDK。作为开发者,您只需要进行简单配置,就可以在您的应用中使用AIKit提供的各种AI能力。
    关于SDK的具体使用方法,请仔细阅读下面的文档。

    # 2. 集成说明

    # 2.1 术语介绍

    • APPID:应用 ID,请在http://northseasurffestival.com/中注册成为开发者并创建一款应用,您将获得标识您应用的唯一ID。
    • APIKey:访问大发pk10端能力需要提供的参数。
    • APISercet:访问大发pk10端能力需要提供的参数。

    # 2.2 导入SDK依赖包

    • aikit.har 复制到Module的libs文件夹(没有的话须手动创建), 并将以下代码添加到您Module的build.gradle中:
    depedencies {
        implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
    }
    

    # 2.3 权限声明

    权限 用途
    INTERNET 允许程序联网的权限
    MICROPHONE 允许应用检测网络连接状态
    应用最高权限手机配置请关联性HarmonyOS 对于应用最高权限的应用制定方案,代码例子:
    "reqPermissions": [
          {
            "name": "harmonyos.permission.INTERNET",
            "reason": "the app need internet"
          },
          {
            "name": "harmonyos.permission.MICROPHONE",
            "reason": "the app need microphone",
            "usedScene": {
              "ability": [
                "ccom.iflytek.aiaa.MainAbility"
              ],
              "when": "always"
            }
          }
        ]
    

    # 2.4 SDK初始化

    # 2.4.1 初始化SDK

    初期化即构建话音调试目标,只能有初期化后才需要实用AIKit的相关的服务。初期化代码是什么给出:
    // 初始值化时 将 appid、apikey 和 apisecret 进入
      SpeechUtility.getInstance().init(getContext(),
                    "xxxxx", // appid
                    "xxxxx", // apikey
                    "xxxxx" // apisecret
                    );
    

    # 2.4.2 参数设置

    一开始化规格表明下面表
    参数Key 名称 是否必传
    context 鸿蒙系统的 Context Y
    APPID 应用id Y
    APIKEY API Key Y
    APISERCET API密钥 Y

    # 2.5 语音听写

    语音说话听写,是依托于大自然规律编程语言处理学处理,将大自然规律编程语言处理学音屏变为为文章输出精度的技术。

    # 2.5.1 音频文件语音识别

    使用SpeechUtility.getInstance().voiceRecognize()方法,参考代码如下:

       /**
         * 声频程序转字体  将发掘包中的mp3转成word文档
         */
        private void audioFiles2String() {
            try {
                // 得到 品牌中的 测试软件的音频软件
                String mp3Path = "resources/rawfile/test.mp3";
                RawFileEntry rawFileEntry = getContext().getResourceManager().getRawFileEntry(mp3Path);
                Resource resource = rawFileEntry.openRawFile();
                // 建设视频语音听写产品参数类:IatParam
                IatParam iatParam = new IatParam();
                // 设制声频材料的论文格式 
                iatParam.setEncoding(IatParam.Encoding.lame);           
                SpeechUtility instance = SpeechUtility.getInstance();
                // 开始了声音辨认
                 instance.voiceRecognize(iatParam, resource, new ResultCallBack<IatResult>() {
                    @Override
                    public void onResult(IatResult result) {
                      // 了解数据源回掉 目光 选股在子线程运行
                      handler.postTask(() -> {
                          String s = CommonResultParser.parseIatResult(result.getData());
                          textField.append(s);
                        });
                    }
                });
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    

    # 2.5.2 录音并识别

    使用录音功能需要先在Ability类中动态申请"harmonyos.permission.MICROPHONE"权限,参考代码如下:

    if (verifySelfPermission("harmonyos.permission.MICROPHONE") != IBundleManager.PERMISSION_GRANTED) {
        // 软件应用未被获取授权管理
        if (canRequestPermission("harmonyos.permission.MICROPHONE")) {
            // 有无能够个人伸请弹框许可(首轮个人伸请也许微信用户未选取禁止进入且不想信息提示)
            requestPermissionsFromUser(new String[]{"harmonyos.permission.MICROPHONE"},
                    REQUEST_MICROPHONE);
        } else {
            // 显示信息软件应用可以应用权限的情形,的提示用户的来到快速设置品牌授权
        }
    } else {
        // 权限管理已被给予
    }
    
    录制视频鉴别参看码内容如下:
       /**
         * 开始了语音
         */
        private void startRecord() {
            // 新创建语言听写数据类:IatParam
            IatParam iatParam = new IatParam();
            iatParam.setEncoding(IatParam.Encoding.raw);
            SpeechUtility.getInstance().startRecord(iatParam, new ResultCallBack<IatResult>() {
                @Override
                public void onResult(IatResult result) {
                   // 修改大数据回掉 要留意 回调函数在子线程来执行
                      handler.postTask(() -> {
                          String s = CommonResultParser.parseIatResult(result.getData());
                          textField.append(s);
                        });
                }
            });
        }
    
        /**
         * 进行录音带
         */
        private void stopRecord() {
            SpeechUtility.getInstance().stopRecord();
        }
    

    # 2.5.3 参数设置

    语音听写参数类 IatParam 支持设置的参数见下表:

    参数名称 数据类型 名称 是否必须 说明
    encoding string 音频格式 Y 目前仅支持“ lame” 、“raw ”,mp3文件请使用“ lame”,pcm输入时使用 “raw ”
    ptt int 是否开启标点识别 N 0:不开启标点识别, 1:开启标点识别,默认不开启
    nunum int 是否把中文数字转换成阿拉伯数字 N 0:关闭, 1:开启 默认关闭
    dwa string pgs N 最小长度:0, 最大长度:10
    evl int engine vad link N 0:关, 1:开启
    proc int 是否使用后处理 N 0:关, 1:开
    nbest int 句子级别多候选个数 N 最小值:0, 最大值:5
    wbest int 词级别多候选个数 N 最小值:0, 最大值:5
    pvinfo int 在 pgs 结果中展示vad信息 N 0:关, 1:开
    aqc int aqc N 0:关, 1:开
    ltc int 中英文筛选功能 N 最小值:0, 最大值:3
    vad_enable bool 使能VAD N true/false
    vad_eos int 后端点 N 最小值:0, 最大值:60000,当vad_enable为true时有效
    vrto int vad前置端点超时时间 N 最小值:0, 最大值:60000

    # 2.5.4 结果解析

    JSON字段 英文全称 类型 说明
    sn sentence number 第几句
    ls last sentence boolean 是否最后一句
    bg begin number 保留字段,无需关注
    ed end number 保留字段,无需关注
    ws words array
    cw chinese word array 中文分词
    w word string 单字
    sc score number 分数
    {
        "sn": 1,
        "ls": true,
        "bg": 0,
        "ed": 0,
        "ws": [
            {
                "bg": 0,
                "cw": [
                    {
                        "w": "本文",
                        "sc": 0
                    }
                ]
            },
            {
                "bg": 0,
                "cw": [
                    {
                        "w": "的",
                        "sc": 0
                    }
                ]
            },
            {
                "bg": 0,
                "cw": [
                    {
                        "w": "天气预告",
                        "sc": 0
                    }
                ]
            },
            {
                "bg": 0,
                "cw": [
                    {
                        "w": "咋个样",
                        "sc": 0
                    }
                ]
            },
            {
                "bg": 0,
                "cw": [
                    {
                        "w": "。",
                        "sc": 0
                    }
                ]
            }
        ]
    }
    

    # 2.6 语音合成

    与语音听写相反,语音合成是将一段文字转换为语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。文字格式为“utf8”。

    # 2.6.1 接口说明

    语音合成使用SpeechSynthesizer接口,示例代码如下

       /**
         * 进行制成
         */
        private void startTts() {
           
            String stringSource = "那段话将被制作而成为语音聊天";
            // 创建个存储文件夹保存文档制作而成的统计数据
            File externalCacheDir = getContext().getExternalCacheDir();
            File file = new File(externalCacheDir, "tts_test.mp3");
            if (file.exists()) {
                file.delete();
            }
            SpeechUtility instance = SpeechUtility.getInstance();
            TtsParam ttsParam = new TtsParam();
            instance.voiceSynthesise(ttsParam, stringSource, new ResultCallBack<TtsResult>() {
                        @Override
                        public void onResult(TtsResult result) {
                            // 取得数值回掉 注意事项 选股在子线程执行工作
                            // result.getData() 为获得的发音的数据
                            FileUtil.append(file, result.getData());
                            // 提炼完后
                            if (result.getStatus() == SpeechUtility.StatusCode.END) {
                                handler.postTask(() -> showToast("组成立即"));
                                // 开启播出
                                playMp3(file);
                            }
                        }
                    }
            );
        }
    
        /**
         * 点击音频视频
         *
         * @param file 源zip文件
         */
        private void playMp3(File file) {
            try {
                Player player = new Player(getContext());
                FileInputStream in = new FileInputStream(file);
                // 从显示流拿FD因素
                FileDescriptor fd = in.getFD();
                Source source = new Source(fd);
                player.setSource(source);
                player.prepare();
                player.play();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    

    # 2.6.2 参数设置

    语音合成参数类 TtsParam支持设置的参数见下表:

    参数名称 数据类型 名称 是否必须 说明
    encoding string 输出音频格式 N 目前仅支持“ lame” (mp3文件)
    speed int 合成语速 N 默认50,取值范围:[0-100]
    volume int 合成音量 N 默认50,取值范围:[0-100]
    pitch int 合成语调 N 默认50,取值范围:[0-100]
    sample_rate int 采样率 N 暂时只支持16000
    channels int 声道数 N 可选值1,2.默认值1
    bit_depth int 位深 N 8,16默认值16
    vcn string 发音人 N 可选值x2_lzy:x2_lzy, x2_chongchong:x2_chongchong, x2_yifei:x2_yifei, x2_xiaopei:x2_xiaopei, x2_xiaoyuan:x2_xiaoyuan

    # 2.6.3 结果解析

    SDK请收藏本站组成然而为组成音响数剧,可存储到File中,随后用Player连播器连播。

    # 3. 接口说明:

    # 3.1 SpeechUtility类

    方向 com.iflytek.cloud
    • # getInstance

      public static SpeechUtility getInstance()
      
      创建配置单单例
      • 返回:

        SpeechUtility
    • # init

      public void init(harmonyos.app.Context context,
                       java.lang.String appId,
                       java.lang.String apiKey,
                       java.lang.String apiSecret)
      
      默认化
      • 参数:

        context - context

        appId - appId

        apiKey - apiKey

        apiSecret - apiSecret

    • # voiceRecognize

      public void voiceRecognize(com.iflytek.cloud.param.IatParam param,
                                 com.iflytek.cloud.result.ResultCallBack<com.iflytek.cloud.result.IatResult> callBack)
      
      聊天语音甄别
      • 参数:

        param - 语音识别入参

        callBack - ResultCallBack

    • # voiceRecognize

      public void voiceRecognize(com.iflytek.cloud.param.IatParam param,
                                 java.io.InputStream resource,
                                 com.iflytek.cloud.result.ResultCallBack<com.iflytek.cloud.result.IatResult> callBack)
      
      声音转写
      • 参数:

        param - 语音转写的参数

        resource - 语音流

        callBack - 回调

    • # startRecord

      public void startRecord(com.iflytek.cloud.param.IatParam iatParam,
                              com.iflytek.cloud.result.ResultCallBack<com.iflytek.cloud.result.IatResult> callBack)
      
      现在开始录音带,并将甄别结局进行callBack取到
      • 参数:

        iatParam - IatParam

        callBack - ResultCallBack

    • # isRecording

      public boolean isRecording()
      
      来判断是都通话录音中
      • 返回:

        boolean
    • # stopRecord

      public void stopRecord()
      
      关闭录制视频
    • # voiceSynthesise

      public void voiceSynthesise(com.iflytek.cloud.param.TtsParam param,
                                  java.lang.String stringSource,
                                  com.iflytek.cloud.result.ResultCallBack<com.iflytek.cloud.result.TtsResult> callBack)
      
      qq语音聚合
      • 参数:

        param - TtsParam 参数

        stringSource - 待合成的内容

        callBack - 合成回调

    • # writeData

      public void writeData(java.io.InputStream resource)
      
      读入数据分析到搜索引擎
      • 参数:

        resource - 数据源

    • # writeData

      public void writeData(java.io.File file)
                     throws java.io.FileNotFoundException
      
      读取信息
      • 参数:

        file - 数据源

      • 抛出:

        java.io.FileNotFoundException - FileNotFoundException

    • # writeData

      public void writeData(byte[] inData)
      
      读取数据显示数据显示
      • 参数:

        inData - 数据源

    • # writeData

      public void writeData(byte[] inData,
                            int dataStatus)
      
      读入数剧
      • 参数:

        inData - 数据源

        dataStatus - 写入的状态码

    • # writeDataEnd

      public void writeDataEnd()
      
      终结注入数据报告
    • # destroy

      public destroy()
    
    查扣单例人

    # 3.2 IatParam类

    包根目录 com.iflytek.cloud.param;

    说明:语音转写的入参封装类, 可通过该类的set方法设置参数,也可以通过put(key,value)方式设置参数。

    # 3.3 TtsParam类

    包方法 com.iflytek.cloud.param;

    说明:语音合成的入参封装类, 可通过该类的set方法设置参数,也可以通过put(key,value)方式设置参数。

    # 4. 常见问题:

    # SDK 都支持哪些 HarmonyOS 版本?

    答:请求进行 HarmonyOS 1.0的电话安卓版本。

    # 如何查看SDK版本?

    答:灵活运用 Version.getVersion()可刷出 SDK 游戏版本号。

    # SDK是否支持同一业务同时开启多路会话?

    答:SDK不支技多路应用程序。
    大发pk10 大发pk10