Merge branch 'wd' into master

This commit is contained in:
shuto-fandd
2020-10-19 18:26:17 +08:00
committed by GitHub
53 changed files with 824 additions and 1510 deletions

View File

@@ -1,43 +1,42 @@
# 科大讯飞的语音听说读写的cordova插件
## 安装方法
APP_KEY参数值为您在科大讯飞申请的appid
运行cordova plugin add https://gitee.com/shuto/cordova-plugin-IFlyspeech-master.git --variable APP_KEY=${APP_KEY}
## 调用方法
/** 开始录音 最大持续时间40秒
* @Param 成功callback
* @Param 失败callback
* @Param 是否显示录音画面
* @Param 是否显示标点
*
*/
xunfeiListenSpeaking.startListen(success, error, isShowDialog, isShowPunc);
// 停止录音
xunfeiListenSpeaking.stopListen();
/**
* 开始说话
* @Param 成功callback
* @Param 失败callback
* @Param 需要说出的信息
*/
xunfeiListenSpeaking.startSpeak(success, error, message);
// 停止说话
xunfeiListenSpeaking.stopSpeak();
// 暂停说话
xunfeiListenSpeaking.pauseSpeaking();
// 恢复说话
xunfeiListenSpeaking.resumeSpeaking();
# 科大讯飞的语音听说读写的cordova插件
## 安装方法
APP_KEY参数值为您在科大讯飞申请的appid
运行cordova plugin add https://gitee.com/shuto/cordova-plugin-IFlyspeech-master.git --variable APP_KEY=${APP_KEY}
## 调用方法
/** 开始录音 最大持续时间40秒
* @Param 成功callback
* @Param 失败callback
* @Param 是否显示录音画面
* @Param 是否显示标点
*
*/
xunfeiListenSpeaking.startListen(success, error, isShowDialog, isShowPunc);
// 停止录音
xunfeiListenSpeaking.stopListen();
/**
* 开始说话
* @Param 成功callback
* @Param 失败callback
* @Param 需要说出的信息
*/
xunfeiListenSpeaking.startSpeak(success, error, message);
// 停止说话
xunfeiListenSpeaking.stopSpeak();
// 暂停说话
xunfeiListenSpeaking.pauseSpeaking();
// 恢复说话
xunfeiListenSpeaking.resumeSpeaking();

View File

@@ -1,278 +1,113 @@
<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-plugin-xunfeiListenSpeaking" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<name>cordova-plugin-xunfeiListenSpeaking</name>
<?xml version="1.0" encoding="utf-8"?>
<plugin id="cordova-plugin-xunfeiListenSpeaking" version="0.0.1"
xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android">
<name>cordova-plugin-xunfeiListenSpeaking</name>
<preference name="APP_KEY" />
<preference name="CHANNEL" default="developer-default" />
<platform name = "android">
<js-module name="xunfeiListenSpeaking" src="www/cordova-plugin-xunfeiListenSpeaking.js">
<clobbers target="xunfeiListenSpeaking" />
</js-module>
<engines>
<engine name="cordova" version=">=3.0" />
</engines>
<platform name="android">
<js-module name="xunfeiListenSpeaking" src="www/cordova-plugin-xunfeiListenSpeaking.js">
<clobbers target="xunfeiListenSpeaking" />
</js-module>
<config-file target="res/xml/config.xml" parent="/*">
<feature name="XunfeiListenSpeaking" >
<param name="android-package" value="com.thomas.xunfeilistenspeaking.XunfeiListenSpeaking"/>
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 移动统计分析 -->
<meta-data
android:name="IFLYTEK_APPKEY"
android:value="$APP_KEY" />
<meta-data
android:name="IFLYTEK_CHANNEL"
android:value="$CHANNEL" />
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity android:name="com.thomas.xunfeilistenspeaking.XunfeiDialogActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
<feature name="XunfeiListenSpeaking">
<param name="android-package" value="com.thomas.xunfeilistenspeaking.XunfeiListenSpeaking" />
<param name="onload" value="true" />
</feature>
</config-file>
<!--assets-->
<source-file src="src/android/assets/iattest.wav" target-dir="assets"/>
<source-file src="src/android/assets/call.bnf" target-dir="assets"/>
<source-file src="src/android/assets/grammar_sample.abnf" target-dir="assets"/>
<source-file src="src/android/assets/keys" target-dir="assets"/>
<source-file src="src/android/assets/userwords" target-dir="assets"/>
<source-file src="src/android/assets/iflytek/voice_bg.9.png" target-dir="assets/iflytek"/>
<source-file src="src/android/assets/iflytek/voice_empty.png" target-dir="assets/iflytek"/>
<source-file src="src/android/assets/iflytek/voice_full.png" target-dir="assets/iflytek"/>
<source-file src="src/android/assets/iflytek/waiting.png" target-dir="assets/iflytek"/>
<source-file src="src/android/assets/iflytek/warning.png" target-dir="assets/iflytek"/>
<source-file src="src/android/assets/iflytek/recognize.xml" target-dir="assets/iflytek"/>
<config-file target="AndroidManifest.xml" parent="/manifest">
<!-- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
<!-- <uses-permission android:name="android.permission.READ_CONTACTS" /> -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- <uses-permission android:name="android.permission.WRITE_SETTINGS" /> -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity android:name="com.thomas.xunfeilistenspeaking.XunfeiDialogActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
</config-file>
<!-- assets -->
<resource-file src="src/android/assets/iflytek/voice_bg.9.png" target="assets/iflytek/voice_bg.9.png" />
<resource-file src="src/android/assets/iflytek/voice_empty.png" target="assets/iflytek/voice_empty.png" />
<resource-file src="src/android/assets/iflytek/voice_full.png" target="assets/iflytek/voice_full.png" />
<resource-file src="src/android/assets/iflytek/waiting.png" target="assets/iflytek/waiting.png" />
<resource-file src="src/android/assets/iflytek/warning.png" target="assets/iflytek/warning.png" />
<resource-file src="src/android/assets/iflytek/recognize.xml" target="assets/iflytek/recognize.xml" />
<!-- lib -->
<lib-file src="src/android/libs/Msc.jar" />
<lib-file src="src/android/libs/Sunflower.jar" />
<!-- <lib-file src="src/android/libs/armeabi" />
<lib-file src="src/android/libs/armeabi-v7a" />
<lib-file src="src/android/libs/arm64-v8a" /> -->
<resource-file src="src/android/libs/armeabi/libmsc.so" target="jniLibs/armeabi/libmsc.so" />
<resource-file src="src/android/libs/armeabi-v7a/libmsc.so" target="jniLibs/armeabi-v7a/libmsc.so" />
<resource-file src="src/android/libs/arm64-v8a/libmsc.so" target="jniLibs/arm64-v8a/libmsc.so" />
<resource-file src="src/android/libs/x86/libmsc.so" target="jniLibs/x86/libmsc.so" />
<resource-file src="src/android/libs/x86_64/libmsc.so" target="jniLibs/x86_64/libmsc.so" />
<resource-file src="src/android/libs/mips/libmsc.so" target="jniLibs/mips/libmsc.so" />
<resource-file src="src/android/libs/mips64/libmsc.so" target="jniLibs/mips64/libmsc.so" />
<!-- layout -->
<resource-file src="src/android/res/layout/ifly_layout_mnotice_image.xml" target="res/layout/ifly_layout_mnotice_image.xml" />
<!--lib-->
<source-file src="src/android/libs/Msc.jar" target-dir="libs"/>
<source-file src="src/android/libs/Sunflower.jar" target-dir="libs"/>
<source-file src="src/android/libs/armeabi/libmsc.so" target-dir="libs/armeabi"/>
<source-file src="src/android/libs/arm64-v8a/libmsc.so" target-dir="libs/arm64-v8a"/>
<source-file src="src/android/libs/armeabi-v7a/libmsc.so" target-dir="libs/armeabi-v7a"/>
<!--layout-->
<source-file src="src/android/res/layout/activity_xunfei_dialog.xml" target-dir="res/layout"/>
<!--xml-->
<source-file src="src/android/res/xml/iat_setting.xml" target-dir="res/xml"/>
<source-file src="src/android/res/xml/ise_settings.xml" target-dir="res/xml"/>
<source-file src="src/android/res/xml/tts_setting.xml" target-dir="res/xml"/>
<source-file src="src/android/res/xml/understand_setting.xml" target-dir="res/xml"/>
<!--src-->
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/XunfeiListenSpeaking.java" target-dir="src/com/thomas/xunfeilistenspeaking"/>
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/IatSettings.java" target-dir="src/com/thomas/xunfeilistenspeaking"/>
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/JsonParser.java" target-dir="src/com/thomas/xunfeilistenspeaking"/>
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/SettingTextWatcher.java" target-dir="src/com/thomas/xunfeilistenspeaking"/>
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/XunfeiDialogActivity.java" target-dir="src/com/thomas/xunfeilistenspeaking"/>
<!--res-->
<!-- src -->
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/XunfeiListenSpeaking.java" target-dir="src/com/thomas/xunfeilistenspeaking" />
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/IatSettings.java" target-dir="src/com/thomas/xunfeilistenspeaking" />
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/JsonParser.java" target-dir="src/com/thomas/xunfeilistenspeaking" />
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/SettingTextWatcher.java" target-dir="src/com/thomas/xunfeilistenspeaking" />
<source-file src="src/android/src/com/thomas/xunfeilistenspeaking/XunfeiDialogActivity.java" target-dir="src/com/thomas/xunfeilistenspeaking" />
<!-- res -->
<config-file target="res/values/strings.xml" parent="/resources">
<!--<string name="app_name">讯飞语音示例</string>-->
<!-- 请替换成在语音云官网申请的appid -->
<string name="app_id">$APP_KEY</string>
<string name="example_explain">本示例为讯飞语音Android平台开发者提供语音听写、语法识别、语义理解和语音合成等代码样例旨在让用户能够依据该示例快速开发出基于语音接口的应用程序。</string>
<string name="text_tts_source">科大讯飞作为中国最大的智能语音技术提供商在智能语音技术领域有着长期的研究积累并在中文语音合成、语音识别、口语评测等多项技术上拥有国际领先的成果。科大讯飞是我国唯一以语音技术为产业化方向的“国家863计划成果产业化基地”…</string>
<string name="text_tts_source_en">iFLYTEK is a national key software enterprise dedicated to the research of intelligent speech and language technologies, development of software and chip products, provision of speech information services, and integration of E-government systems. The intelligent speech technology of iFLYTEK, the core technology of the company, represents the top level in the world.</string>
<string name="text_isr_abnf_hint">\t上传内容为\n\t#ABNF 1.0 gb2312;\n\tlanguage zh-CN;\n\tmode voice;\n\troot $main;\n\t$main = $place1 到$place2 ;\n\t$place1 = 北京 | 武汉 | 南京 | 天津 | 东京;\n\t$place2 = 上海 | 合肥;</string>
<string name="text_understand_hint">\t您可以说\n\t今天的天气怎么样?\n\t北京到上海的火车?\n\t有什么好吃的?\n\t上海外滩有哪些酒店?\n\n\t更多语义请登录\n\thttp://osp.voicecloud.cn/ \n\t配置您的专属语义吧!</string>
<!-- 听写 -->
<string name="text_begin">请开始说话…</string>
<string name="text_begin_recognizer">开始音频流识别</string>
<string name="text_upload_contacts">上传联系人</string>
<string name="text_upload_userwords">上传用户词表</string>
<string name="text_upload_success">上传成功</string>
<string name="text_userword_empty">词表下载失败或内容为空</string>
<string name="text_download_success">下载成功</string>
<string name="pref_key_iat_show">iat_show</string>
<string name="pref_title_iat_show">显示听写界面</string>
<string name="pref_title_iat_dwa">结果动态修正</string>
<string name="app_id">$APP_KEY</string>
<string name="xunfei_cancel_listen">取消语音</string>
</config-file>
</platform>
<string name="xunfei_cancel_listen">取消语音</string>
<!-- 合成 -->
<string-array name="engine_entries">
<item>本地合成</item>
<item>在线合成</item>
</string-array>
<string-array name="engine_values">
<item>local</item>
<item>cloud</item>
</string-array>
<string-array name="voicer_cloud_entries">
<item>小燕—女青、中英、普通话</item>
<item>小宇—男青、中英、普通话</item>
<item>凯瑟琳—女青、英</item>
<item>亨利—男青、英</item>
<item>玛丽—女青、英</item>
<item>小研—女青、中英、普通话</item>
<item>小琪—女青、中英、普通话</item>
<item>小峰—男青、中英、普通话</item>
<item>小梅—女青、中英、粤语</item>
<item>小莉—女青、中英、台湾普通话</item>
<item>小蓉—女青、中、四川话</item>
<item>小芸—女青、中、东北话</item>
<item>小坤—男青、中、河南话</item>
<item>小强—男青、中、湖南话</item>
<item>小莹—女青、中、陕西话</item>
<item>小新—男童、中、普通话</item>
<item>楠楠—女童、中、普通话</item>
<item>老孙—男老、中、普通话</item>
</string-array>
<string-array name="voicer_cloud_values">
<item>xiaoyan</item>
<item>xiaoyu</item>
<item>catherine</item>
<item>henry</item>
<item>vimary</item>
<item>vixy</item>
<item>xiaoqi</item>
<item>vixf</item>
<item>xiaomei</item>
<item>xiaolin</item>
<item>xiaorong</item>
<item>xiaoqian</item>
<item>xiaokun</item>
<item>xiaoqiang</item>
<item>vixying</item>
<item>xiaoxin</item>
<item>nannan</item>
<item>vils</item>
</string-array>
<string-array name="emot_entries">
<item>正常</item>
<item>高兴</item>
<item>悲伤</item>
<item>生气</item>
</string-array>
<string-array name="emot_values">
<item>neutral</item>
<item>happy</item>
<item>sad</item>
<item>angry</item>
</string-array>
<string-array name="stream_entries">
<item>通话</item>
<item>系统</item>
<item>铃声</item>
<item>音乐</item>
<item>闹铃</item>
<item>通知</item>
</string-array>
<string-array name="stream_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>
<string formatted="false" name="tts_toast_format">缓冲进度为%d%%,播放进度为%d%%</string>
<!-- 语言 -->
<string-array name="language_entries">
<item>普通话</item>
<item>粤语</item>
<item>河南话</item>
<item>英语</item>
</string-array>
<string-array name="language_values">
<item>mandarin</item>
<item>cantonese</item>
<item>henanese</item>
<item>en_us</item>
</string-array>
<!-- 语音评测 -->
<string name="text_en_word">"[word]\napple\nbanana\norange"</string>
<string name="text_en_sentence">"The quick brown fox jumps over the lazy dog."</string>
<string name="text_cn_syllable">"知,痴,是"</string>
<string name="text_cn_word">"磁铁,率领,脆弱,动手,古筝"</string>
<string name="text_cn_sentence">"一座座雪峰插入云霄,峰顶银光闪闪,大大小小的湖泊,像颗颗宝石镶嵌在彩带般的沟谷中。"</string>
<string-array name="ise_language_entries">
<item>英语</item>
<item>汉语</item>
</string-array>
<string-array name="ise_language_values">
<item>en_us</item>
<item>zh_cn</item>
</string-array>
<string-array name="category_entries">
<item>单字</item>
<item>词语</item>
<item>句子</item>
</string-array>
<string-array name="category_values">
<item>read_syllable</item>
<item>read_word</item>
<item>read_sentence</item>
</string-array>
<string-array name="result_level_entries">
<item>plain</item>
<item>complete</item>
</string-array>
<!-- 标点符号 -->
<string-array name="punc_entries">
<item>有标点</item>
<item>无标点</item>
</string-array>
<string-array name="punc_values">
<item>1</item>
<item>0</item>
</string-array>
<string-array name="dwa_entries">
<item>开启</item>
<item>关闭</item>
</string-array>
</config-file>
</platform>
<platform name="ios">
<js-module name="speech" src="www/Speech.js">
<!-- <clobbers target="navigator.speech" />-->
<clobbers target="xunfeiListenSpeaking" />
</js-module>
<config-file parent="/*" target="config.xml">
<feature name="Speech">
<param name="ios-package" value="CDVSpeech" />
</feature>
</config-file>
<platform name="ios">
<js-module name="speech" src="www/Speech.js">
<!-- <clobbers target="navigator.speech" /> -->
<clobbers target="xunfeiListenSpeaking" />
</js-module>
<config-file parent="/*" target="config.xml">
<feature name="Speech">
<param name="ios-package" value="CDVSpeech" />
</feature>
</config-file>
<config-file target="*-Info.plist" parent="NSMicrophoneUsageDescription">
<string></string>
</config-file>
<header-file src="src/ios/CDVSpeech.h" />
<source-file src="src/ios/CDVSpeech.m" />
<resource-file src="src/ios/IFlySpeechConfig.plist" />
<config-file target="*-Info.plist" parent="NSMicrophoneUsageDescription">
<string></string>
</config-file>
<header-file src="src/ios/CDVSpeech.h" />
<source-file src="src/ios/CDVSpeech.m" />
<framework src="AVFoundation.framework" />
<framework src="AddressBook.framework" />
<framework src="AudioToolbox.framework" />
<framework src="SystemConfiguration.framework" />
<framework src="QuartzCore.framework" />
<framework src="libz.tbd" />
<framework src="libc++.tbd" />
<framework src="UIKit.framework" />
<framework src="CoreGraphics.framework" />
<framework src="Foundation.framework" />
<framework src="CoreTelephony.framework" />
<framework src="CoreLocation.framework" />
<framework src="Contacts.framework" />
<framework src="AVFoundation.framework" />
<framework src="AddressBook.framework" />
<framework src="AudioToolbox.framework" />
<framework src="SystemConfiguration.framework" />
<framework src="QuartzCore.framework" />
<framework src="libz.tbd" />
<framework src="libc++.tbd" />
<framework src="UIKit.framework" />
<framework src="CoreGraphics.framework" />
<framework src="Foundation.framework" />
<framework src="CoreTelephony.framework" />
<framework src="CoreLocation.framework" />
<framework src="Contacts.framework" />
<framework src="src/ios/iflyMSC.framework" custom="true" />
<config-file target="*IFlySpeechConfig.plist" parent="AppKey">
<string>$APP_KEY</string>
</config-file>
</platform>
</platform>
</plugin>

View File

@@ -1,12 +0,0 @@
#BNF+IAT 1.0 UTF-8;
!grammar call;
!slot <contact>;
!slot <callPre>;
!slot <callPhone>;
!slot <callTo>;
!start <callStart>;
<callStart>:[<callPre>][<callTo>]<contact><callPhone>|[<callPre>]<callPhone>[<callTo>]<contact>;
<contact>:张海洋;
<callPre>:我要|我想|我想要;
<callPhone>:打电话;
<callTo>:给;

View File

@@ -1,8 +0,0 @@
#ABNF 1.0 UTF-8;
language zh-CN;
mode voice;
root $main;
$main = $place1 到 $place2;
$place1 = 北京|武汉|南京|天津|东京;
$place2 = 上海|合肥;

Binary file not shown.

Binary file not shown.

View File

@@ -1 +0,0 @@
{"userword":[{"name":"我的常用词","words":["佳晨实业","蜀南庭苑","高兰路","复联二"]},{"name":"我的好友","words":["李馨琪","鹿晓雷","张集栋","周家莉","叶震珂","熊泽萌"]}]}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical">
<ImageView
android:id="@+id/ifly_mnotice_image_container"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:layout_height="match_parent"/>
</RelativeLayout>

View File

@@ -1,155 +0,0 @@
<resources>
<string name="app_name">XunfeiSpeaking</string>
<!--<string name="app_name">讯飞语音示例</string>-->
<!-- 请替换成在语音云官网申请的appid -->
<string name="app_id">584e7225</string>
<string name="example_explain">本示例为讯飞语音Android平台开发者提供语音听写、语法识别、语义理解和语音合成等代码样例旨在让用户能够依据该示例快速开发出基于语音接口的应用程序。</string>
<string name="text_tts_source">科大讯飞作为中国最大的智能语音技术提供商在智能语音技术领域有着长期的研究积累并在中文语音合成、语音识别、口语评测等多项技术上拥有国际领先的成果。科大讯飞是我国唯一以语音技术为产业化方向的“国家863计划成果产业化基地”…</string>
<string name="text_tts_source_en">iFLYTEK is a national key software enterprise dedicated to the research of intelligent speech and language technologies, development of software and chip products, provision of speech information services, and integration of E-government systems. The intelligent speech technology of iFLYTEK, the core technology of the company, represents the top level in the world.</string>
<string name="text_isr_abnf_hint">\t上传内容为\n\t#ABNF 1.0 gb2312;\n\tlanguage zh-CN;\n\tmode voice;\n\troot $main;\n\t$main = $place1 到$place2 ;\n\t$place1 = 北京 | 武汉 | 南京 | 天津 | 东京;\n\t$place2 = 上海 | 合肥;</string>
<string name="text_understand_hint">\t您可以说\n\t今天的天气怎么样?\n\t北京到上海的火车?\n\t有什么好吃的?\n\t上海外滩有哪些酒店?\n\n\t更多语义请登录\n\thttp://osp.voicecloud.cn/ \n\t配置您的专属语义吧!</string>
<!-- 听写 -->
<string name="text_begin">请开始说话…</string>
<string name="text_begin_recognizer">开始音频流识别</string>
<string name="text_upload_contacts">上传联系人</string>
<string name="text_upload_userwords">上传用户词表</string>
<string name="text_upload_success">上传成功</string>
<string name="text_userword_empty">词表下载失败或内容为空</string>
<string name="text_download_success">下载成功</string>
<string name="pref_key_iat_show">iat_show</string>
<string name="pref_title_iat_show">显示听写界面</string>
<string name="pref_title_iat_dwa">结果动态修正</string>
<!-- 合成 -->
<string-array name="engine_entries">
<item>本地合成</item>
<item>在线合成</item>
</string-array>
<string-array name="engine_values">
<item>local</item>
<item>cloud</item>
</string-array>
<string-array name="voicer_cloud_entries">
<item>小燕—女青、中英、普通话</item>
<item>小宇—男青、中英、普通话</item>
<item>凯瑟琳—女青、英</item>
<item>亨利—男青、英</item>
<item>玛丽—女青、英</item>
<item>小研—女青、中英、普通话</item>
<item>小琪—女青、中英、普通话</item>
<item>小峰—男青、中英、普通话</item>
<item>小梅—女青、中英、粤语</item>
<item>小莉—女青、中英、台湾普通话</item>
<item>小蓉—女青、中、四川话</item>
<item>小芸—女青、中、东北话</item>
<item>小坤—男青、中、河南话</item>
<item>小强—男青、中、湖南话</item>
<item>小莹—女青、中、陕西话</item>
<item>小新—男童、中、普通话</item>
<item>楠楠—女童、中、普通话</item>
<item>老孙—男老、中、普通话</item>
</string-array>
<string-array name="voicer_cloud_values">
<item>xiaoyan</item>
<item>xiaoyu</item>
<item>catherine</item>
<item>henry</item>
<item>vimary</item>
<item>vixy</item>
<item>xiaoqi</item>
<item>vixf</item>
<item>xiaomei</item>
<item>xiaolin</item>
<item>xiaorong</item>
<item>xiaoqian</item>
<item>xiaokun</item>
<item>xiaoqiang</item>
<item>vixying</item>
<item>xiaoxin</item>
<item>nannan</item>
<item>vils</item>
</string-array>
<string-array name="emot_entries">
<item>正常</item>
<item>高兴</item>
<item>悲伤</item>
<item>生气</item>
</string-array>
<string-array name="emot_values">
<item>neutral</item>
<item>happy</item>
<item>sad</item>
<item>angry</item>
</string-array>
<string-array name="stream_entries">
<item>通话</item>
<item>系统</item>
<item>铃声</item>
<item>音乐</item>
<item>闹铃</item>
<item>通知</item>
</string-array>
<string-array name="stream_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>
<string formatted="false" name="tts_toast_format">缓冲进度为%d%%,播放进度为%d%%</string>
<!-- 语言 -->
<string-array name="language_entries">
<item>普通话</item>
<item>粤语</item>
<item>河南话</item>
<item>英语</item>
</string-array>
<string-array name="language_values">
<item>mandarin</item>
<item>cantonese</item>
<item>henanese</item>
<item>en_us</item>
</string-array>
<!-- 语音评测 -->
<string name="text_en_word">"[word]\napple\nbanana\norange"</string>
<string name="text_en_sentence">"The quick brown fox jumps over the lazy dog."</string>
<string name="text_cn_syllable">"知,痴,是"</string>
<string name="text_cn_word">"磁铁,率领,脆弱,动手,古筝"</string>
<string name="text_cn_sentence">"一座座雪峰插入云霄,峰顶银光闪闪,大大小小的湖泊,像颗颗宝石镶嵌在彩带般的沟谷中。"</string>
<string-array name="ise_language_entries">
<item>英语</item>
<item>汉语</item>
</string-array>
<string-array name="ise_language_values">
<item>en_us</item>
<item>zh_cn</item>
</string-array>
<string-array name="category_entries">
<item>单字</item>
<item>词语</item>
<item>句子</item>
</string-array>
<string-array name="category_values">
<item>read_syllable</item>
<item>read_word</item>
<item>read_sentence</item>
</string-array>
<string-array name="result_level_entries">
<item>plain</item>
<item>complete</item>
</string-array>
<!-- 标点符号 -->
<string-array name="punc_entries">
<item>有标点</item>
<item>无标点</item>
</string-array>
<string-array name="punc_values">
<item>1</item>
<item>0</item>
</string-array>
<string-array name="dwa_entries">
<item>开启</item>
<item>关闭</item>
</string-array>
</resources>

View File

@@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference
android:key="iat_language_preference"
android:title="语言设置"
android:entries="@array/language_entries"
android:entryValues="@array/language_values"
android:summary="支持:普通话,粤语,河南话,英语 "
android:defaultValue="mandarin" />
<EditTextPreference
android:key="iat_vadbos_preference"
android:title="前端点超时"
android:dialogTitle="请输入时间(0-10000)ms"
android:summary="默认值短信转写5000其他4000"
android:defaultValue="5000" />
<EditTextPreference
android:key="iat_vadeos_preference"
android:title="后端点超时"
android:dialogTitle="请输入时间(0-10000)ms"
android:summary="默认值短信转写1800其他700 "
android:defaultValue="1800" />
<ListPreference
android:key="iat_punc_preference"
android:title="标点符号"
android:entries="@array/punc_entries"
android:entryValues="@array/punc_values"
android:summary="默认值:有标点 "
android:defaultValue="1" />
<CheckBoxPreference
android:key="@string/pref_key_iat_show"
android:title="@string/pref_title_iat_show"
android:defaultValue="true" />
</PreferenceScreen>

View File

@@ -1,47 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference
android:key="language"
android:title="评测语种"
android:summary=""
android:entries="@array/ise_language_entries"
android:entryValues="@array/ise_language_values"
android:defaultValue="zh_cn"/>
<ListPreference
android:key="category"
android:title="评测题型"
android:summary=""
android:entries="@array/category_entries"
android:entryValues="@array/category_values"
android:defaultValue="read_sentence"/>
<ListPreference
android:key="result_level"
android:title="结果等级"
android:summary=""
android:entries="@array/result_level_entries"
android:entryValues="@array/result_level_entries"
android:defaultValue="complete"/>
<EditTextPreference
android:key="vad_bos"
android:title="前端点超时"
android:summary=""
android:defaultValue="5000"/>
<EditTextPreference
android:key="vad_eos"
android:title="后端点超时"
android:summary=""
android:defaultValue="1800"/>
<EditTextPreference
android:key="speech_timeout"
android:title="评测超时"
android:summary=""
android:defaultValue="-1"/>
</PreferenceScreen>

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<EditTextPreference
android:dialogTitle="请输入语速:在线(0-100)本地(0-200)"
android:key="speed_preference"
android:defaultValue="50"
android:summary="默认值50 "
android:title="语速" />
<EditTextPreference
android:dialogTitle="请输入音调(0-100)"
android:key="pitch_preference"
android:defaultValue="50"
android:summary="默认值50 "
android:title="音调" />
<EditTextPreference
android:dialogTitle="请输入音量(0-100)"
android:key="volume_preference"
android:defaultValue="50"
android:summary="默认值50 "
android:title="音量" />
<ListPreference
android:defaultValue="3"
android:entries="@array/stream_entries"
android:entryValues="@array/stream_values"
android:key="stream_preference"
android:title="音频流类型" />
</PreferenceScreen>

View File

@@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference
android:key="understander_language_preference"
android:title="语言设置"
android:entries="@array/language_entries"
android:entryValues="@array/language_values"
android:summary="支持:普通话,粤语,河南话,英语 "
android:defaultValue="mandarin" />
<EditTextPreference
android:key="understander_vadbos_preference"
android:title="前端点超时"
android:dialogTitle="请输入时间(0-10000)ms"
android:summary="默认值短信转写5000其他4000"
android:defaultValue="4000" />
<EditTextPreference
android:key="understander_vadeos_preference"
android:title="后端点超时"
android:dialogTitle="请输入时间(0-10000)ms"
android:summary="默认值短信转写1800其他700 "
android:defaultValue="700" />
<ListPreference
android:key="understander_punc_preference"
android:title="标点符号"
android:entries="@array/punc_entries"
android:entryValues="@array/punc_values"
android:summary="默认值:有标点 "
android:defaultValue="1" />
<!-- <CheckBoxPreference -->
<!-- android:key="nbest_preference" -->
<!-- android:title="@string/set_multiple_candidate_title" -->
<!-- android:summary="@string/set_multiple_candidate_summary" -->
<!-- android:defaultValue="false" /> -->
</PreferenceScreen>

View File

@@ -12,6 +12,7 @@ import android.widget.Toast;
import com.iflytek.cloud.*;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import com.iflytek.cloud.util.ResourceUtil;
import com.iflytek.sunflower.FlowerCollector;
import org.json.JSONException;
import org.json.JSONObject;
@@ -46,7 +47,7 @@ public class XunfeiDialogActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getResources().getIdentifier("activity_xunfei_dialog","layout",getPackageName()));
setContentView(getResources().getIdentifier("ifly_layout_mnotice_image","layout",getPackageName()));
isShowDialog = getIntent().getBooleanExtra("isShowDialog",false);
punc = getIntent().getStringExtra("punc");
@@ -252,6 +253,10 @@ public class XunfeiDialogActivity extends Activity{
// 设置听写引擎
mIat.setParameter(SpeechConstant.ENGINE_TYPE, mEngineType);
if (mEngineType.equals(SpeechConstant.TYPE_LOCAL)) {
// 设置本地识别资源
mIat.setParameter(ResourceUtil.ASR_RES_PATH, getResourcePath());
}
// 设置返回结果格式
mIat.setParameter(SpeechConstant.RESULT_TYPE, "json");
@@ -288,6 +293,15 @@ public class XunfeiDialogActivity extends Activity{
mIat.setParameter(SpeechConstant.ASR_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/msc/iat.wav");
}
private String getResourcePath(){
StringBuffer tempBuffer = new StringBuffer();
//识别通用资源
tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, "iat/common.jet"));
tempBuffer.append(";");
tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, "iat/sms_16k.jet"));
//识别8k资源-使用8k的时候请解开注释
return tempBuffer.toString();
}
@Override
protected void onDestroy() {

View File

@@ -1,9 +1,12 @@
package com.thomas.xunfeilistenspeaking;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
@@ -13,18 +16,25 @@ import com.iflytek.cloud.*;
import com.iflytek.sunflower.FlowerCollector;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PermissionHelper;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
/**
* Created by Thomas.Wang on 17/2/9.
*/
public class XunfeiListenSpeaking extends CordovaPlugin{
private static String TAG = XunfeiListenSpeaking.class.getSimpleName();
public static final int PERMISSION_DENIED_ERROR = 20;
private Context context;
private CallbackContext callbackContext;
private Toast mToast;
@@ -40,18 +50,24 @@ public class XunfeiListenSpeaking extends CordovaPlugin{
private String mEngineType = SpeechConstant.TYPE_CLOUD;
// 用HashMap存储听写结果
private HashMap<String, String> mIatResults = new LinkedHashMap<String, String>();
private boolean isShowDialog;
private String punc;
@Override
protected void pluginInitialize() {
super.pluginInitialize();
context = cordova.getActivity();
// SpeechUtility.createUtility(context, SpeechConstant.APPID +"=584e7225");
SpeechUtility.createUtility(context, SpeechConstant.APPID +"="+context.getString(getId("app_id","string")));
String appid = context.getString(getId("app_id","string"));
SpeechUtility.createUtility(context, SpeechConstant.APPID +"="+appid);
}
private int getId(String idName,String type){
return context.getResources().getIdentifier(idName, type,context.getPackageName());
}
private static final int DIALOG_ACTIVIT_CODE = 0;
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
@@ -61,28 +77,38 @@ public class XunfeiListenSpeaking extends CordovaPlugin{
// boolean isShowDialog = args.getBoolean(0);
// String punc = args.getBoolean(1)?"1":"0";
boolean isShowDialog ;
// boolean isShowDialog ;
try {
isShowDialog = args.getBoolean(0);
}catch (Exception e){
isShowDialog = true;
}
String punc;
// String punc;
try{
punc = args.getBoolean(1)?"1":"0";
}catch (Exception e){
punc = "1";
}
if (isShowDialog){
Intent intent = new Intent();
intent.setClass(context, XunfeiDialogActivity.class);
intent.putExtra("isShowDialog",isShowDialog);
intent.putExtra("punc",punc);
cordova.startActivityForResult( this,intent, DIALOG_ACTIVIT_CODE);
}else {
startListenWidthNotDialog(punc);
}
boolean hasRecordAudioPermission = PermissionHelper.hasPermission(this, Manifest.permission.RECORD_AUDIO);
boolean hasReadExternalStoragePermission = PermissionHelper.hasPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
boolean hasWriteExternalStoragePermission = PermissionHelper.hasPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if(hasRecordAudioPermission && hasReadExternalStoragePermission && hasWriteExternalStoragePermission) {
this.startListen();
}
else {
List<String> permissions = new ArrayList<String>(3);
if (!hasRecordAudioPermission) {
permissions.add(Manifest.permission.RECORD_AUDIO);
}
if (!hasReadExternalStoragePermission) {
permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
if (!hasWriteExternalStoragePermission) {
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
PermissionHelper.requestPermissions(this, 0, permissions.toArray(new String[0]));
}
return true;
}
@@ -121,6 +147,17 @@ public class XunfeiListenSpeaking extends CordovaPlugin{
return false;
}
private void startListen() {
if (isShowDialog){
Intent intent = new Intent();
intent.setClass(context, XunfeiDialogActivity.class);
intent.putExtra("isShowDialog",isShowDialog);
intent.putExtra("punc",punc);
cordova.startActivityForResult( this,intent, DIALOG_ACTIVIT_CODE);
}else {
startListenWidthNotDialog(punc);
}
}
private void stopListen(){
if (mIat!=null&&mIat.isListening()) {
@@ -395,5 +432,17 @@ public class XunfeiListenSpeaking extends CordovaPlugin{
});
}
public void onRequestPermissionResult(int requestCode, String[] permissions,
int[] grantResults) throws JSONException {
for (int r : grantResults) {
if (r == PackageManager.PERMISSION_DENIED) {
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, PERMISSION_DENIED_ERROR));
return;
}
}
startListen();
}
}

View File

@@ -16,8 +16,6 @@
#define STR_RESULTS @"results"
#define STR_PROGRESS @"progress"
// always replace the appid and the SDK with what you get from voicecloud.cn
// static SPEECH_APP_ID;
@interface CDVSpeech()

View File

@@ -0,0 +1,35 @@
//
// IFlyAudioSession.h
// MSCDemo
//
// Created by AlexHHC on 1/9/14.
//
//
#import <Foundation/Foundation.h>
/**
* 音频环境初始化设置AVAudioSession的Category属性。
*/
@interface IFlyAudioSession : NSObject
/**
* 初始化播音环境,主要用于合成播放器。
*
* 此接口主要根据原来的音频环境重新优化设置AVAudioSession的Category属性值。<br>
* 若原来的Category属性值为AVAudioSessionCategoryPlayAndRecord则添加AVAudioSessionCategoryOptionDefaultToSpeakerAVAudioSessionCategoryOptionAllowBluetooth选项若为其他Category属性值且isMPCenter为NO则设置Category属性值为AVAudioSessionCategoryPlayback选项为AVAudioSessionCategoryOptionMixWithOthers若为其他Category属性值且isMPCenter为YES则保持原来的设置不做任何更改。
*
* @param isMPCenter 是否初始化MPPlayerCenter0不初始化1初始化。此参数只在AVAudioSession的Category属性值不为AVAudioSessionCategoryPlayAndRecord时设置有效。
*/
+(void) initPlayingAudioSession:(BOOL)isMPCenter;
/**
* 初始化录音环境,主要用于识别录音器。
*
* 设置AVAudioSession的Category属性值为AVAudioSessionCategoryPlayAndRecord选项为AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowBluetooth。
*
* @return 成功返回YES失败返回NO
*/
+(BOOL) initRecordingAudioSession;
@end

View File

@@ -1,27 +0,0 @@
//
// IFlyContact.h
// msc
//
// Created by ypzhao on 13-3-1.
// Copyright (c) 2013年 IFLYTEK. All rights reserved.
//
#import <Foundation/Foundation.h>
/*!
* 此接口为获取通信录中的联系人
* 获取联系人是为了在进行语音识别时(sms)能更好的识别出您说的人名,联系人上传是属于个性化的
* 一部分.
*/
@interface IFlyContact : NSObject
/*!
* 获取联系人
* 调用此方法需要添加 AddressBook.framework 到工程中,调用此方法后可以直接将通信录中的联系
* 人转化为语音云识别的数据结构。您可以将获取的数据通过IFlyDataUploader类上传到语音云我们
* 只获取通信录中的人名
*
* @return 返回联系人信息
*/
- (NSString *) contact;
@end

View File

@@ -12,7 +12,7 @@
@class IFlySpeechError;
/*!
* 数据上传类
* 数据上传类,主要用于上传语法文件或上传联系人、词表等个性化数据。
*/
@interface IFlyDataUploader : NSObject

View File

@@ -11,33 +11,33 @@
@class IFlySpeechError;
/**
/*!
* 声纹回调协议
*/
@protocol IFlyISVDelegate
/**
/*!
* 声纹结果回调
*
* @param dic 结果
*/
-(void) onResult:(NSDictionary *)dic;
/**
/*!
* 错误码回调
*
* @param errorCode 错误码
*/
-(void) onError:(IFlySpeechError *) errorCode;
-(void) onCompleted:(IFlySpeechError *) errorCode;
@optional
/**
/*!
* 等待结果
*/
-(void) onRecognition;
/**
/*!
* 音量改变回调
*
* @param volume 音量值

View File

@@ -17,113 +17,111 @@
{
}
/*!
* The delegate of FlyISVRecognizer responsing to IFlyISVDelegate.
*/
@property (assign) id<IFlyISVDelegate> delegate;
/*
* FlyISVRecognizer is a kind of Singleton calss
* the function can be used as below:
IFLyISVRecognizer *recognizer=[IFlyISVRecognizer creteRecognizer: self];
/*!
* FlyISVRecognizer is a kind of Singleton calss.The function can be used as below:<br>
* IFLyISVRecognizer *recognizer=[IFlyISVRecognizer creteRecognizer: self];
*/
+(instancetype) sharedInstance;
/*
* genrerate a serial number password
* princeple:
1.number serial has no 1 in itself;
2.the nuber serial has no same number("98765432"is right while "99876543" is wrong)
* @length: the serial number's length,length of "98765432" is 8,
generally length is 8 and other value is forbidden
/*!
* Genrerate a serial number password<br>
* Princeple:<br>
* 1.Number serial has no 1 in itself;<br>
* 2.The nuber serial has no same number("98765432"is right while "99876543" is wrong)
*
* @param length the serial number's length,length of "98765432" is 8,generally length is 8 and other value is forbidden
*/
-(NSString*) generatePassword:(int)length;
/*
* Used to get password from server
* @pwdt:
when pwdt is 1,the function will return chinese text;
while pwdt is 2, the funciton will return number serial
/*!
* Used to get password from server
*
* @param pwdt when pwdt is 1,the function will return chinese text;while pwdt is 2, the funciton will return number serial
*/
-(NSArray*) getPasswordList:(int)pwdt;
/*
* Used to judge if the engine is running in listenning
* return value:
YES: the engine is listenning;
No : the engine is not listenning
/*!
* Used to judge if the engine is running in listenning
*
* @return YES: the engine is listenning;<br>No : the engine is not listenning
*/
-(BOOL) isListening;
/*
* Used to query or delete the voiceprint model in server
* @cmd:
"del": delete model
"que": query model
* @authid: user id ,can be @"tianxia" or other;
* @pwdt: voiceprint type
1: fixed txt voiceprint code ,like @"我的地盘我做主"
2: free voiceprint code , user can speek anything,but 5 times
trainning the speech shall be same
3: number serial voiceprint code ,like @"98765432" and so on
* @ptxt: voiceprint txt,only fixed voiceprint and number serial have this,
in free voiceprint model this param shall be set nil
* @vid: another voiceprint type model,user can use this to query or delete
model in server can be @"jakillasdfasdjjjlajlsdfhdfdsadff",totally 32 bits;
* NOTES:
when vid is not nil,then the server will judge the vid first
while the vid is nil, server can still query or delete the voiceprint model
by other params
/*!
* Used to query or delete the voiceprint model in server
*
* @param cmd "del": delete model;<br>"que": query model;
* @param authid: user id ,can be @"tianxia" or other;
* @param pwdt voiceprint type<br>
* 1: fixed txt voiceprint code ,like @"我的地盘我做主";<br>
* 2: free voiceprint code , user can speek anything,but 5 times trainning the speech shall be same;<br>
* 3: number serial voiceprint code ,like @"98765432" and so on.
* @param ptxt voiceprint txt,only fixed voiceprint and number serial have this,in free voiceprint model this param shall be set nil.
* @param vid another voiceprint type model,user can use this to query or delete model in server can be @"jakillasdfasdjjjlajlsdfhdfdsadff",totally 32 bits;<br>
* NOTES:<br>
* when vid is not nil,then the server will judge the vid first; while the vid is nil, server can still query or delete the voiceprint model by other params.
*/
-(BOOL) sendRequest:(NSString*)cmd authid:(NSString *)auth_id pwdt:(int)pwdt ptxt:(NSString *)ptxt vid:(NSString *)vid err:(int *)err;
/*
* set the voiceprint params
* @"sst" : @"train" or @"verify"
* @"auth_id" : @"tianxia" or ther
* @"sub" : @"ivp"
* @"ptxt" :
* @"rgn" : @"5"
* @"pwdt" : @"1",or @"2", or @"3"
* @"auf" : @"audio/L16;rate=16000" or @"audio/L16;rate=8000"
* @"vad_enable : @"1" or @"0"
* @"vad_timeout" : @"3000"
* @"vad_speech_tail": @"100"
/*!
* Set the voiceprint params
*
* | key | value |
* |:---------------:|:-------------------------------------------------:|
* | sst | @"train" or @"verify" |
* | auth_id | @"tianxia" or other |
* | sub | @"ivp" |
* | ptxt | |
* | rgn | @"5" |
* | pwdt | @"1",or @"2", or @"3" |
* | auf | @"audio/L16;rate=16000" or @"audio/L16;rate=8000" |
* | vad_enable | @"1" or @"0" |
* | vad_timeout | @"3000" |
* | vad_speech_tail | @"100" |
*
* @param value 参数值
* @param key 参数类型
*
* @return 设置成功返回YES失败返回NO
*/
-(BOOL) setParameter:(NSString *)value forKey:(NSString *)key;
/*
* get the voiceprint params
* used the same as function of setParameter
/*!
* Get the voiceprint params used the same as function of setParameter
*/
-(NSString*) getParameter:(NSString *)key;
/*
* start recording
/*!
* Start recording
*/
-(void) startListening;
/*
* stop recording
/*!
* Stop recording
*/
-(void) stopListening;
/*
* cancel recording,like function stopListening
/*!
* Cancel recording,like function stopListening
*/
-(void) cancel; /* cancel recognization */

View File

@@ -9,7 +9,7 @@
#ifndef MSC_IFlyMSC_h
#define MSC_IFlyMSC_h
#import "IFlyContact.h"
#import "IFlyAudioSession.h"
#import "IFlyDataUploader.h"
#import "IFlyDebugLog.h"
#import "IFlyISVDelegate.h"
@@ -27,16 +27,12 @@
#import "IFlySpeechRecognizerDelegate.h"
#import "IFlySpeechSynthesizer.h"
#import "IFlySpeechSynthesizerDelegate.h"
#import "IFlySpeechUnderstander.h"
#import "IFlySpeechUtility.h"
#import "IFlyTextUnderstander.h"
#import "IFlyUserWords.h"
#import "IFlyPcmRecorder.h"
#import "IFlySpeechEvaluator.h"
#import "IFlySpeechEvaluatorDelegate.h"
#import "IFlyVoiceWakeuper.h"
#import "IFlyVoiceWakeuperDelegate.h"
#endif

View File

@@ -14,17 +14,17 @@
#import <AudioToolbox/AudioFile.h>
#import <AudioToolbox/AudioServices.h>
#import <AudioToolbox/AudioConverter.h>
#import <AVFoundation/AVAudioSession.h>
#import <AVFoundation/AVFoundation.h>
@class IFlyPcmRecorder;
/**
/*!
* 录音协议
*/
@protocol IFlyPcmRecorderDelegate<NSObject>
/**
/*!
* 回调音频数据
*
* @param buffer 音频数据
@@ -32,7 +32,7 @@
*/
- (void) onIFlyRecorderBuffer: (const void *)buffer bufferSize:(int)size;
/**
/*!
* 回调音频的错误码
*
* @param recoder 录音器
@@ -42,7 +42,7 @@
@optional
/**
/*!
* 回调录音音量
*
* @param power 音量值
@@ -52,53 +52,65 @@
@end
/**
* 录音封装
/*!
* 录音器控件
*/
@interface IFlyPcmRecorder : NSObject<AVAudioSessionDelegate>
/**
/*!
* 录音委托对象
*/
@property (assign) id<IFlyPcmRecorderDelegate> delegate;
@property (nonatomic,assign) id<IFlyPcmRecorderDelegate> delegate;
/**
/*!
* 用于设置是否在录音结束后发送Deactive通知默认是YES发送
*/
@property (nonatomic,assign) BOOL isNeedDeActive;
/*!
* 单例模式
*
* @return 返回录音对象单例
*/
+ (instancetype) sharedInstance;
/**
/*!
* 开始录音
*
* @return 开启录音成功返回YES否则返回NO
*/
- (BOOL) start;
/**
/*!
* 停止录音
*/
- (void) stop;
/**
/*!
* 设置音频采样率
*
* @param rate -[in] 采样率8k/16k
*/
- (void) setSample:(NSString *) rate;
/*
* 设置录音时间间隔参数
/*!
* 设置录音音量回调时间间隔参数
*/
- (void) setPowerCycle:(float) cycle;
/**
/*!
* 保存录音
*
* @param savePath 音频保存路径
*/
-(void) setSaveAudioPath:(NSString *)savePath;
/*!
* 录音器是否完成
*
* @return 录音器完全结束返回YES否则返回NO
*/
-(BOOL) isCompleted;
@end

View File

@@ -12,8 +12,8 @@
@protocol IFlyRecognizerViewDelegate ;
/*!
* 语音识别控件
* 录音时触摸控件结束录音,开始识别(相当于旧版的停止);触摸其他位置,取消录音,结束会话(取消)
* 语音识别控件<br>
* 录音时触摸控件结束录音,开始识别(相当于旧版的停止);触摸其他位置,取消录音,结束会话(取消)<br>
* 出错时触摸控件,重新开启会话(相当于旧版的再说一次);触摸其他位置,取消录音,结束会话(取消)
*
*/
@@ -87,24 +87,21 @@
/*!
* 设置识别引擎的参数
* 识别的引擎参数(key)取值如下:
* <table>
* <thead>
* <tr><th>*参数</th><th><em>描述</em></th>
* </tr>
* </thead>
* <tbody>
* <tr><td>domain</td><td>应用的领域: 取值为:iat、search、video、poi、music、asr<br/>iat普通文本听写<br/>search热词搜索<br/>video视频音乐搜索<br/>video视频音乐搜索<br/>asr关键词识别;</td></tr>
* <tr><td>vad_bos</td><td>前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位ms<br/>engine指定iat识别默认值为5000<br/>其他情况默认值为 4000范围 0-10000。</td></tr>
* <tr><td>vad_eos</td><td>后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,<br/>自动停止录音;单位:ms;<br/>sms 识别默认为 1800;<br/>其他默认值为 700范围 0-10000。</td></tr>
* <tr><td>sample_rate</td><td>采样率:目前支持的采样率设置有 16000 和 8000。</td></tr>
* <tr><td>asr_ptt</td><td>标点符号设置: 默认为 1当设置为 0 时,将返回无标点符号文本。</td></tr>
* <tr><td>result_type</td><td>返回结果的数据格式: 设置为jsonxmlplain默认为json。</td></tr>
* <tr><td>grammarID</td><td>识别的语法id: 只针对 domain 设置为”asr”的应用。</td></tr>
* <tr><td>asr_audio_path</td><td>音频文件名: 设置此参数后,将会自动保存识别的录音文件。<br/> 路径为Documents/(指定值)。<br/>不设置或者设置为nil则不保存音频。</td></tr>
* <tr><td>params</td><td>扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。</td></tr>
* </tbody>
* </table>
*
* 识别的引擎参数(key)取值如下:<br>
*
* | 参数 | 描述 |
* |-----------------|-------------------------------------------------------|
* | domain | 应用的领域: 取值为:iat、search、video、poi、music、asr<br>iat普通文本听写<br>search热词搜索<br>video视频音乐搜索<br>asr关键词识别;|
* | vad_bos | 前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位ms<br>engine指定iat识别默认值为5000<br>其他情况默认值为 4000范围 0-10000。|
* | vad_eos | 后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,自动停止录音;单位:ms;<br>sms 识别默认值为 1800;<br>其他默认值为 700范围 0-10000。|
* | sample_rate | 采样率:目前支持的采样率设置有 16000 和 8000。|
* | asr_ptt | 标点符号设置: 默认为 1,当设置为 0 时,将返回无标点符号文本。|
* | result_type | 返回结果的数据格式: 可设置为jsonxmlplain默认为json。|
* | grammarID | 识别的语法id: 只针对 domain 设置为”asr”的应用。|
* | asr_audio_path | 音频文件名: 设置此参数后,将会自动保存识别的录音文件。<br>路径为Documents/(指定值)。<br>不设置或者设置为nil则不保存音频。|
* | params | 扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。|
*
* @param value 参数对应的取值
* @param key 识别引擎参数
*

View File

@@ -29,7 +29,7 @@
*
* @param error 识别结束错误码
*/
- (void)onError: (IFlySpeechError *) error;
- (void)onCompleted: (IFlySpeechError *) error;
@optional

View File

@@ -35,7 +35,7 @@ typedef NS_OPTIONS(NSInteger, LOG_LEVEL){
};
/*!
* 此接口为iflyMSC sdk 配置接口。
* 此接口为iflyMSC sdk 配置接口。<br>
* 可以获取版本号,设置日志打印等级等
*/
@interface IFlySetting : NSObject
@@ -55,8 +55,8 @@ typedef NS_OPTIONS(NSInteger, LOG_LEVEL){
+ (LOG_LEVEL) logLvl;
/*!
* 是否打印控制台log
* 在软件发布时建议关闭此log。
* 是否打印控制台log<br>
* 在软件发布时建议关闭此log。
*
* @param showLog -[in] YES,打印log;NO,不打印
*/
@@ -64,26 +64,21 @@ typedef NS_OPTIONS(NSInteger, LOG_LEVEL){
/*!
* 设置日志msc.log生成路径以及日志等级
* <table>
* <thead>
* <tr><th>*日志打印等级</th><th><em>描述</em></th>
* </tr>
* </thead>
* <tbody>
* <tr><td>LVL_ALL</td><td>全部打印</td></tr>
* <tr><td>LVL_DETAIL</td><td>高,异常分析需要的级别</td></tr>
* <tr><td>LVL_NORMAL</td><td>中,打印基本日志信息</td></tr>
* <tr><td>LVL_LOW</td><td>低,只打印主要日志信息</td></tr>
* <tr><td>LVL_NONE</td><td>不打印</td></tr>
* </tbody>
* </table>
*
* | 日志打印等级 | 描述 |
* |------------------------|-----------------------------------|
* | LVL_ALL | 全部打印 |
* | LVL_DETAIL | 高,异常分析需要的级别 |
* | LVL_NORMAL | 中,打印基本日志信息 |
* | LVL_LOW | 低,只打印主要日志信息 |
* | LVL_NONE | 不打印 |
*
* @param level -[in] 日志打印等级
*/
+ (void) setLogFile:(LOG_LEVEL) level;
/*!
* 设置日志文件的路径
* 设置日志文件的路径<br>
* 日志文件默认存放在Documents目录。
*
* @param path -[in] 日志文件的全路径

View File

@@ -9,7 +9,7 @@
#import <Foundation/Foundation.h>
/*!
* 公共常量类
* 公共常量类<br>
* 主要定义参数的key value值
*/
@interface IFlySpeechConstant : NSObject
@@ -18,7 +18,7 @@
#pragma mark - 通用参数key
/*!
* 语音应用ID
* 语音应用ID<br>
* 通过开发者网站申请
*
* @return 语音应用IDkey
@@ -47,6 +47,13 @@
*/
+(NSString*)ACCENT_HENANESE;
/*!
* 语言区域。
*
* @return 四川话value。
*/
+(NSString*)ACCENT_SICHUANESE;
/*!
* 语言区域。
*
@@ -55,7 +62,7 @@
+(NSString*)ACCENT_CANTONESE;
/*!
* 语言
* 语言<br>
* 支持zh_cnzh_twen_us<br>
*
* @return 语言key
@@ -85,8 +92,7 @@
+(NSString*)LANGUAGE_ENGLISH;
/*!
* 返回结果的数据格式,
* 可设置为jsonxmlplain默认为json。
* 返回结果的数据格式,可设置为jsonxmlplain默认为json。
*
* @return 返回结果的数据格式key
*/
@@ -107,15 +113,15 @@
+(NSString*)DATA_TYPE;
/*!
* 语音输入超时时间
* 单位ms默认30000
* 语音输入超时时间<br>
* 单位ms默认30000
*
* @return 语音输入超时时间key
*/
+(NSString*)SPEECH_TIMEOUT;
/*!
* 网络连接超时时间
* 网络连接超时时间<br>
* 单位ms默认20000
*
* @return 网络连接超时时间key
@@ -136,17 +142,17 @@
*/
+(NSString*)PARAMS;
/**
/*!
* 加密参数
*
* 支持类型ssl 加密 tcp 非加密 默认tcp
* 支持类型ssl 加密 tcp 非加密 默认tcp<br>
* 建议对安全性要求较高时使用ssl。
*
* @return 加密参数key
*/
+(NSString*)PROT_TYPE;
/**
/*!
* ssl证书内容
*
* @return ssl证书内容key
@@ -168,7 +174,7 @@
+(NSString*)SAMPLE_RATE;
/*!
* 合成、识别、唤醒、评测、声纹等业务采样率。
* 合成、识别、唤醒、声纹等业务采样率。
*
* @return 合成及识别采样率8K Value。
*/
@@ -182,8 +188,8 @@
+(NSString*)SAMPLE_RATE_16K;
/*!
* 引擎类型。
* 可选localcloudauto
* 引擎类型。<br>
* 可选localcloudauto<br>
* 默认auto
*
* @return 引擎类型key。
@@ -232,25 +238,46 @@
*/
+(NSString*)RESULT_ENCODING;
/**
* 是否初始化播放器
* SDK内部播放器采用音频队列实现有部分外部需求需要自定义音频队列可以通过此开关控制
/*!
* 是否初始化播放器<br>
* SDK内部播放器采用音频队列实现有部分外部需求需要自定义音频队列可以通过此开关控制<br>
* 0:不初始化非0或者参数为空:初始化,默认初始化
* @return 是否初始化播放器 参数key
*
* @return 是否初始化播放器参数key
*/
+(NSString*)PLAYER_INIT;
/*!
* 是否播放器结束后发送deactive系统通知<br>
* SDK内部播放器结束后可通过此开关发送deactive系统通知使其他被中断的音频应用解除中断<br>
* 0:不发送非0或者参数为空:发送,默认发送
*
* @return 是否播放器结束后发送deactive系统通知参数key
*/
+(NSString*)PLAYER_DEACTIVE;
/**
* 是否初始化录音器
* SDK内部录音器采用音频队列实现有部分外部需求需要自定义音频队列可以通过此开关控制
* 是否初始化录音器<br>
* SDK内部录音器采用音频队列实现有部分外部需求需要自定义音频队列可以通过此开关控制<br>
* 0:不初始化非0或者参数为空:初始化,默认初始化
* @return 是否初始化录音器 参数key
*
* @return 是否初始化录音器参数key
*/
+(NSString*)RECORDER_INIT;
/**
* 是否录音器结束后发送deactive系统通知<br>
* SDK内部录音器结束后可通过此开关发送deactive系统通知使其他被中断的音频应用解除中断<br>
* 0:不发送非0或者参数为空:发送,默认发送
*
* @return 是否录音器结束后发送deactive系统通知参数key
*/
+(NSString*)RECORDER_DEACTIVE;
#pragma mark - 合成相关设置key
/*!
* 语速
* 语速<br>
* 范围 0~100 默认值:50
*
* @return 语速key
@@ -258,7 +285,7 @@
+(NSString*)SPEED;
/*!
* 音调
* 音调<br>
* 范围0~100默认值:50
*
* @return 音调key
@@ -268,8 +295,9 @@
/*!
* 合成录音保存路径
*
* 注意:只需要设置文件名则可,会自动拼接到[IFlySetting setLogFilePath]接口设置的目录后
*
* @return 合成录音保存路径key
* @注意 只需要设置文件名则可会自动拼接到IFlySetting setLogFilePath接口设置的目录后
*/
+(NSString*)TTS_AUDIO_PATH;
@@ -281,7 +309,7 @@
+(NSString*)VAD_ENABLE;
/*!
* VAD前端点超时
* VAD前端点超时<br>
* 范围0-10000(单位ms)
*
* @return VAD前端点超时key
@@ -289,7 +317,7 @@
+(NSString*)VAD_BOS;
/*!
* VAD后端点超时
* VAD后端点超时。<br>
* 可选范围0-10000(单位ms)
*
* @return VAD后端点超时key
@@ -344,32 +372,30 @@
/*!
* 发音人
* <table>
* <thead>
* <tr><th>*云端发音人名称</th><th><em>参数</em></th>
* </tr>
* </thead>
* <tbody>
* <tr><td>小燕</td><td>xiaoyan</td></tr>
* <tr><td>小宇</td><td>xiaoyu</td></tr>
* <tr><td>凯瑟琳</td><td>catherine</td></tr>
* <tr><td>亨利</td><td>henry</td></tr>
* <tr><td>玛丽</td><td>vimary</td></tr>
* <tr><td>小研</td><td>vixy</td></tr>
* <tr><td>小琪</td><td>vixq</td></tr>
* <tr><td>小峰</td><td>vixf</td></tr>
* <tr><td>小梅</td><td>vixl</td></tr>
* <tr><td>小莉</td><td>vixq</td></tr>
* <tr><td>小蓉(四川话)</td><td>vixr</td></tr>
* <tr><td>小芸</td><td>vixyun</td></tr>
* <tr><td>小坤</td><td>vixk</td></tr>
* <tr><td>小强</td><td>vixqa</td></tr>
* <tr><td>小莹</td><td>vixying</td></tr>
* <tr><td>小新</td><td>vixx</td></tr>
* <tr><td>楠楠</td><td>vinn</td></tr>
* <tr><td>老孙</td><td>vils</td></tr>
* </tbody>
* </table>
*
* 云端支持如下发音人:<br>
* 对于网络TTS的发音人角色不同引擎类型支持的发音人不同使用中请注意选择。<br>
*
* | 发音人 | 参数 |
* |:--------:|:----------------:|
* | 小燕 | xiaoyan |
* | 小宇 | xiaoyu |
* | 凯瑟琳 | catherine |
* | 亨利 | henry |
* | 玛丽 | vimary |
* | 小研 | vixy |
* | 小琪 | vixq |
* | 小峰 | vixf |
* | 小梅 | vixl |
* | 小莉 | vixq |
* | 小蓉 | vixr |
* | 小芸 | vixyun |
* | 小坤 | vixk |
* | 小强 | vixqa |
* | 小莹 | vixyin |
* | 小新 | vixx |
* | 楠楠 | vinn |
* | 老孙 | vils |
*
* @return 发音人key
*/
@@ -377,19 +403,22 @@
/*!
* 发音人ID key。
*
* @return 发音人ID key
*/
+(NSString*)VOICE_ID;
/*!
* 发音人语种 key。
*
* 参数值0:Auto 1:中文 2英文 ,默认 0.
*
* @return 发音人ID key
*/
+(NSString*)VOICE_LANG;
/*!
* 音量
* 音量<br>
* 范围0~100 默认值:50
*
* @return 音量key
@@ -397,35 +426,34 @@
+(NSString*)VOLUME ;
/*!
* 合成音频播放缓冲时间
* 即缓冲多少秒音频后开始播放如tts_buffer_time=1000;
* 合成音频播放缓冲时间<br>
* 即缓冲多少秒音频后开始播放如tts_buffer_time=1000;<br>
* 默认缓冲1000ms毫秒后播放。
*
* @return 合成音频播放缓冲时间缓冲时间key
*/
+(NSString*)TTS_BUFFER_TIME ;
/** 合成数据即时返回
*/
/**
/*!
* 合成数据是否即时返回
* 是否需要数据回调为1时当合成一段音频会通过onEvent回调返回直接合成结束
*
* 是否需要数据回调为1时当合成一段音频会通过onEvent回调返回直接合成结束<br>
* 设置为1为即时返回0为非即时返回默认值为0
*
* @return 成数据即时返回key
* @return 成数据即时返回key
*/
+(NSString*)TTS_DATA_NOTIFY;
/**
/*!
* 预合成文本
*
* @return 预合成文本参数key
*/
+(NSString*)NEXT_TEXT;
/**
* 是否需要打开MPPlayingInfocenter
/*!
* 是否需要打开MPPlayingInfocenter<br>
* 是否需要初始化MPPlayerCenter的属性;0:需要初始化1:不初始化
*
* @return 是否需要打开MPPlayingInfocenter 参数key
@@ -435,8 +463,8 @@
#pragma mark - 识别、听写、语义相关设置key
/*!
* 录音源
* 录音时的录音方式默认为麦克风设置为1
* 录音源<br>
* 录音时的录音方式默认为麦克风设置为1<br>
* 如果需要外部送入音频,设置为-1通过WriteAudio接口送入音频。
*
* @return 录音源key
@@ -479,15 +507,15 @@
+(NSString*)ASR_PTT_NODOT;
/*!
* 本地语法名称。
* 本地语法名称对应云端的有CLOUD_GRAMMAR
* 本地语法名称。<br>
* 本地语法名称对应云端的有CLOUD_GRAMMAR
*
* @return 本地语法名称key。
*/
+(NSString*)LOCAL_GRAMMAR;
/*!
* 云端语法ID。
* 云端语法ID。<br>
* 云端编译语法返回的表示早期版本使用GRAMMAR_ID仍然兼容但建议使用新的。
*
* @return 云端语法ID key。
@@ -530,7 +558,7 @@
+(NSString*)GRAMMAR_LIST;
/*!
* 开放语义协议版本号。
* 开放语义协议版本号。<br>
* 如需使用请在http://osp.voicecloud.cn/上进行业务配置
*
* @return 开放语义协议版本号key。
@@ -560,17 +588,24 @@
+(NSString*)IVW_ONESHOT;
/*!
* 唤醒工作方式
* 1表示唤醒成功后继续录音0表示唤醒成功后停止录音。
* 唤醒工作方式<br>
* 1表示唤醒成功后继续录音0表示唤醒成功后停止录音。
*
* @return 唤醒工作方式key
*/
+(NSString*)KEEP_ALIVE;
/*!
* 唤醒录音保存路径
*
* @return 唤醒录音保存路径key
*/
+(NSString*) IVW_AUDIO_PATH;
#pragma mark - 评测相关设置key
/*!
* 评测类型<br>
* 可选值read_syllable(英文评测不支持):单字;read_word:词语;read_sentence:句子;read_chapter(待开放):篇章。
* 可选值read_syllable(英文评测不支持):单字;read_word:词语;read_sentence:句子;read_chapter(待开放):篇章。
*
* @return 评测类型 key
*/
@@ -578,15 +613,15 @@
/*!
* 评测结果等级<br>
* 可选值complete完整 plain简单
* 可选值complete完整 plain简单
*
* @return 评测结果等级 key
*/
+(NSString*)ISE_RESULT_LEVEL;
/*!
* 评测结果格式
* 可选值xml;plain
* 评测结果格式<br>
* 可选值xml;plain
*
* @return 评测结果格式 key
*/
@@ -602,7 +637,7 @@
/*!
* 朗读跟踪,只对句子和篇章有效<br>
* 可选值enable:开启;disable:关闭。
* 可选值enable:开启;disable:关闭。
*
* @return 朗读跟踪 key
*/
@@ -617,28 +652,28 @@
+(NSString*)ISE_TRACK_TYPE;
#pragma mark - 语记SDK业务key
/**
/*!
* 本地所有资源
*
* @return 本地所有资源key
*/
+ (NSString *)PLUS_LOCAL_ALL;
/**
/*!
* 本地合成资源
*
* @return 本地合成资源key
*/
+ (NSString *)PLUS_LOCAL_TTS;
/**
/*!
* 本地识别资源
*
* @return 本地识别资源key
*/
+ (NSString *)PLUS_LOCAL_ASR;
/**
/*!
* 本地唤醒资源
*
* @return 本地唤醒资源key
@@ -647,110 +682,110 @@
#pragma mark - 身份验证业务key
/**
* auth_id
/*!
* auth_id<br>
* 用于用户注册和登录、查询、删除等业务时标识用户身份
*
* @return 用户标识
*/
+ (NSString*)MFV_AUTH_ID;
/**
/*!
* 请求业务类型可选值mfv默认融合验证ivp声纹ifr人脸
*
* @return 请求业务类型key
*/
+ (NSString*)MFV_SUB;
/**
* 会话类型不同sub有不同的sst取值。
* ifrenrollverifyidentifyreenrollquerydelete
/*!
* 会话类型不同sub有不同的sst取值。<br>
* ifrenrollverifyidentifyreenrollquerydelete<br>
* ivpenrolltrainverifyreenrollquerydeletedownload
*
* @return 会话类型key
*/
+ (NSString*)MFV_SST;
/**
/*!
* 融合验证模式仅在融合验证场景下使用。可选值sin单一生物特征数据验证mix混合生物特征数据验证agi灵活生物特征数据验证
*
* @return 融合验证模式key
*/
+ (NSString*)MFV_VCM;
/**
/*!
* 特征场景用来说明本次验证将涉及的业务。可选值ivpifrivp|ifr
*
* @return 特征场景 key
*/
+ (NSString*)MFV_SCENES;
/**
/*!
* 确认周期(affirmance cycle单位s),用户设置的确认超时时间(生命周期),仅在灵活融合验证场景下使用
*
* @return 确认周期key
*/
+ (NSString*)MFV_AFC;
/**
/*!
* 数据保存路径
*
* @return 数据保存路径key
*/
+ (NSString*)MFV_DATA_PATH;
/**
/*!
* 训练次数取值2~9.无默认值,必须明确指定。
*
* @return 训练次数key
*/
+ (NSString*)MFV_RGN;
/**
/*!
* 声纹确认门限值,验证得分>=tsd验证通过否则验证失败该参数目前不支持,作为保留参数。却只范围0~100.
*
* @return 声纹确认门限值key
*/
+ (NSString*)MFV_TSD;
/**
/*!
* 密码文本。从服务端下载,比如数字密码所需要的数字串。
*
* @return 密码文本key
*/
+ (NSString*)MFV_PTXT;
/**
/*!
* 密码类型。取值1(文本密码),2(自由说),3(数字密码).
*
* @return 密码类型key
*/
+ (NSString*)MFV_PWDT;
/**
/*!
* 取消注册。取值0(不取消,即不生效),1(取消本次注册).
*
* @return 取消注册key
*/
+ (NSString*)MFV_FIN;
/**
/*!
* 等待超时时间:描述客户端等待结果的超时时间
*
* @return 等待超时时间:key
*/
+ (NSString*)MFV_WTT;
/**
* 数据格式
/*!
* 数据格式<br>
* 声纹为音频采样率支持16000和8000;人脸为图片格式支持jpg和gif
*
* @return 数据格式key
*/
+ (NSString*)MFV_DATA_FORMAT;
/**
* 数据压缩编码
/*!
* 数据压缩编码<br>
* 声纹为;人脸支持raw不对图片压缩
*
* @return 数据压缩编码key
@@ -772,78 +807,95 @@
//7. appid 取值:用户申请的appid 用途: 验证用户
/** sub 默认值:wfr
/*!
* sub 默认值:wfr<br>
* 用于区分业务类型,web访问方式中nginx配置不用使用但是在结构化日志和染色日志记录中使用。
*/
+ (NSString*) FACE_SUB;
/** WFR
/*!
* WFR<br>
* sub参数的默认值
*/
+ (NSString*) FACE_WFR;
/** sst
/*!
* sst<br>
* 指定本路会话是属于何种性质
*/
+ (NSString*) FACE_SST;
/** REG
/*!
* REG<br>
* 人脸图像注册(reg):上传图像,验证图像的有效性,然后存储起来,作为数据源。
*/
+ (NSString*) FACE_REG;
/** VERIFY
/*!
* VERIFY<br>
* 人脸图像验证(verify):通过与指定源图像比较,验证人脸相似性。
*/
+ (NSString*) FACE_VERIFY;
/** DETECT
/*!
* DETECT<br>
* 人脸图像检测(detect):能够检测出不同姿态方位的人脸在图中的位置。
*/
+ (NSString*) FACE_DETECT;
/** ALIGN
/*!
* ALIGN<br>
* 人脸图像聚焦(align):在给定人脸框下自动标定出两眼、鼻尖、嘴角的坐标。
*/
+ (NSString*) FACE_ALIGN;
/** ATTR
/*!
* ATTR<br>
* 面部属性识别(attr):对面部属性进行识别:例如秃顶、刘海、大嘴、模糊、眼镜等。
*/
+ (NSString*) FACE_ATTR;
/** AUE
/*!
* AUE<br>
* 图像压缩格式现在引擎不支持图像压缩aue只能取值raw
*/
+ (NSString*) FACE_AUE;
/** RAW
/*!
* RAW<br>
* AUE参数的值
*/
+ (NSString*) FACE_RAW;
/** PSET
/*!
* PSET<br>
* 人脸识别验证阈值,取值可以是负数也可以是整数。
*/
+ (NSString*) FACE_PSET;
/** SKIP
/*!
* SKIP<br>
* 后台图片处理是否进行过滤。true表示不过滤false表示过滤传入字符串@“true”或@“false”
*/
+ (NSString*) FACE_SKIP;
/** GID
/*!
* GID<br>
* 图像模型id4a6c124ed6b78436ee5aac4563f13eb5
*/
+ (NSString*) FACE_GID;
/**
* auth_id
/*!
* auth_id<br>
* 用于用户注册和登录、查询、删除等业务时标识用户身份
*
* @return 用户标识
*/
+ (NSString*)FACE_AUTH_ID;
/** DVC
/*!
* DVC<br>
* 用户设备编号,用于验证用户
*/
+ (NSString*) FACE_DVC;

View File

@@ -22,7 +22,7 @@
@property(nonatomic,assign) int errorCode;
/*!
* 错误码类
* 错误码类
*/
@property(nonatomic,assign) int errorType;
@@ -55,4 +55,4 @@
- (NSString *) errorDesc;
@end
#endif
#endif

View File

@@ -10,6 +10,9 @@
#import <Foundation/Foundation.h>
#import "IFlySpeechEvaluatorDelegate.h"
#define IFLY_AUDIO_SOURCE_MIC @"1"
#define IFLY_AUDIO_SOURCE_STREAM @"-1"
/*!
* 语音评测类
*/
@@ -55,17 +58,18 @@
- (NSString*)parameterForKey:(NSString *)key;
/*!
* 开始评测
* 同时只能进行一路会话,这次会话没有结束不能进行下一路会话,否则会报错
* 开始评测<br>
* 同时只能进行一路会话,这次会话没有结束不能进行下一路会话,否则会报错
*
* @param data 评测的试题
* @param params 评测的参数
* @return 成功返回YES失败返回NO
*/
- (void)startListening:(NSData *)data params:(NSString *)params;
- (BOOL)startListening:(NSData *)data params:(NSString *)params;
/*!
* 停止录音
* 调用此函数会停止录音,并开始进行语音识别
* 停止录音<br>
* 调用此函数会停止录音,并开始进行语音识别
*/
- (void)stopListening;
@@ -76,3 +80,22 @@
@end
/*!
* 音频流评测<br>
* 音频流评测可以将文件分段写入
*/
@interface IFlySpeechEvaluator(IFlyStreamISERecognizer)
/*!
* 写入音频流
*
* @param audioData 音频数据
*
* @return 写入成功返回YES写入失败返回NO
*/
- (BOOL) writeAudio:(NSData *) audioData;
@end

View File

@@ -25,15 +25,15 @@
- (void)onVolumeChanged:(int)volume buffer:(NSData *)buffer;
/*!
* 开始录音回调
* 当调用了`startListening`函数之后如果没有发生错误则会回调此函数。如果发生错误则回调onError:函数
* 开始录音回调<br>
* 当调用了`startListening`函数之后如果没有发生错误则会回调此函数。如果发生错误则回调onCompleted:函数
*/
- (void)onBeginOfSpeech;
/*!
* 停止录音回调
* 当调用了`stopListening`函数或者引擎内部自动检测到断点,如果没有发生错误则回调此函数。
* 如果发生错误则回调onError:函数
* 停止录音回调<br>
* 当调用了`stopListening`函数或者引擎内部自动检测到断点,如果没有发生错误则回调此函数。<br>
* 如果发生错误则回调onCompleted:函数
*/
- (void)onEndOfSpeech;
@@ -44,18 +44,16 @@
/*!
* 评测错误回调
* 在进行语音评测过程中的任何时刻都有可能回调此函数你可以根据errorCode进行相应的处理.
* 当errorCode没有错误时表示此次会话正常结束否则表示此次会话有错误发生。特别的当调用
* `cancel`函数时,引擎不会自动结束,需要等到回调此函数,才表示此次会话结束。在没有回调此函
* 数之前如果重新调用了`startListenging`函数则会报错误。
*
* 在进行语音评测过程中的任何时刻都有可能回调此函数你可以根据errorCode进行相应的处理.当errorCode没有错误时表示此次会话正常结束否则表示此次会话有错误发生。特别的当调用`cancel`函数时,引擎不会自动结束,需要等到回调此函数,才表示此次会话结束。在没有回调此函数之前如果重新调用了`startListenging`函数则会报错误。
*
* @param errorCode 错误描述类
*/
- (void)onError:(IFlySpeechError *)errorCode;
- (void)onCompleted:(IFlySpeechError *)errorCode;
/*!
* 评测结果回调
* 在评测过程中可能会多次回调此函数,你最好不要在此回调函数中进行界面的更改等操作,只需要将回调的结果保存起来。
* 评测结果回调<br>
* 在评测过程中可能会多次回调此函数,你最好不要在此回调函数中进行界面的更改等操作,只需要将回调的结果保存起来。
*
* @param results -[out] 评测结果。
* @param isLast -[out] 是否最后一条结果

View File

@@ -13,92 +13,75 @@
*/
typedef NS_ENUM(NSUInteger,IFlySpeechEventType){
/*!
* 网络状态消息
* 网络状态消息<br>
* 在消息到达时,可通过onEvent的第2个参数arg1,获取当前网络连接状态值
*/
IFlySpeechEventTypeNetPref = 10001,
/**
* 转写音频文件消息
* 在录音模式下成功创建音频文件时返回。可通过onEvent
* 第4个参数data 指定Key为[IFlySpeechConstant IST_AUDIO_PATH],获取音频文件绝对路径.
* 或通过[IFlySpeechTranscripter getParameter:[IFlySpeechConstant IST_AUDIO_PATH]],
* 获取音频文件绝对路径.
/*!
* 转写音频文件消息<br>
* 在录音模式下成功创建音频文件时返回。可通过onEvent第4个参数data指定Key为[IFlySpeechConstant IST_AUDIO_PATH],获取音频文件绝对路径.或通过[IFlySpeechTranscripter getParameter:[IFlySpeechConstant IST_AUDIO_PATH]],获取音频文件绝对路径.
*/
IFlySpeechEventTypeISTAudioFile = 10004,
/**
* 转写已上传字节消息
* 在消息到达时,通过onEvent
* 的第个参数arg1,获取已确认上传到服务器的字节数.
* 若当前音频源为非写音频模式,还可通过onEvent
* 的第三个参数arg2,获取当前所有音频的字节大小.录音模式时,由于所有音频字节大小会变。
* 当停止音频输入后(等待录音时间超时
* [IFlySpeechConstant SPEECH_TIMEOUT]
* ,或调用[IFlySpeechTranscripter stopTranscripting]
* 且服务器收到所有音频时第四个参数data将包含完成标记的布尔值(true)可通过data调用
* 指定KEY为KCIFlySpeechEventKeyISTUploadComplete获取。
* 此消息可能多次返回.
/*!
* 转写已上传字节消息<br>
* 在消息到达时,通过onEvent的第二个参数arg1,获取已确认上传到服务器的字节数.若当前音频源为非写音频模式,还可通过onEvent
* 的第个参数arg2,获取当前所有音频的字节大小.录音模式时,由于所有音频字节大小会变。当停止音频输入后(等待录音时间超时[IFlySpeechConstant SPEECH_TIMEOUT],或调用[IFlySpeechTranscripter stopTranscripting]且服务器收到所有音频时第四个参数data将包含完成标记的布尔值(true)可通过data调用指定KEY为KCIFlySpeechEventKeyISTUploadComplete获取。此消息可能多次返回.
*/
IFlySpeechEventTypeISTUploadBytes = 10006,
/**
* 转写缓存剩余
* 此消息仅在音频源为-1时需要关注
* 在调用[IFlySpeechTranscripter writeAudio]写音频时,应该关注此事件
* 此事件在调用写音频接口、及音频最后被写入底库库时分别回调一次。当事件回调时通过onEvent
* 的第二个参数arg1,获取当前剩余的缓存大小,当缓存小于要写入的音频时,应该先暂停写音频数据,直到下次缓存大小大于要写入的音频时.
* 最大缓存为128KByte。
/*!
* 转写缓存剩余<br>
* 此消息仅在音频源为-1时需要关注,在调用[IFlySpeechTranscripter writeAudio]写音频时,应该关注此事件。<br>
* 此事件在调用写音频接口、及音频最后被写入底库库时分别回调一次。当事件回调时通过onEvent的第二个参数arg1,获取当前剩余的缓存大小,当缓存小于要写入的音频时,应该先暂停写音频数据,直到下次缓存大小大于要写入的音频时.最大缓存为128KByte
*/
IFlySpeechEventTypeISTCacheLeft = 10007,
/**
* 转写结果等待时间消息
* 在消息到达时,通过 onEvent
* 的第二个参数arg1,获取当前结果需要的时间.
/*!
* 转写结果等待时间消息<br>
* 在消息到达时,通过 onEvent的第二个参数arg1,获取当前结果需要的时间.<br>
* 此消息可能多次返回,返回时间不定,且不一定会返回.
*/
IFlySpeechEventTypeISTResultTime= 10008,
/**
* 转写转写音频同步ID消息
* 在消息到达时,通过 onEvent
* 的第二个参数arg1,获取当前写音频同步ID.
/*!
* 转写转写音频同步ID消息<br>
* 在消息到达时,通过 onEvent的第二个参数arg1,获取当前写音频同步ID.<br>
* 此消息可能多次返回.
*/
IFlySpeechEventTypeISTSyncID= 10009,
/**
* 会话开始消息
/*!
* 会话开始消息<br>
* 在会话开始成功后返回
*/
IFlySpeechEventTypeSessionBegin = 10010,
/**
* 会话结束消息
/*!
* 会话结束消息<br>
* 在会话结束前返回
*/
IFlySpeechEventTypeSessionEnd = 10011,
/**
/*!
* 音量消息,在得到音量时抛出,暂时只有身份验证的声纹业务用到
*/
IFlySpeechEventTypeVolume = 10012,
/**
/*!
* VAD后端点消息在检测到VAD后端点时抛出暂时只有身份验证的声纹业务用到
*/
IFlySpeechEventTypeVadEOS = 10013,
/*!
* 服务端会话id
* 在消息到达时,可通过onEvent的第4个参数data(字典类型)
* 指定key KCIFlySpeechEventKeySessionID,获取服务端会话id.
* 服务端会话id<br>
* 在消息到达时,可通过onEvent的第4个参数data(字典类型)指定key KCIFlySpeechEventKeySessionID,获取服务端会话id.
*/
IFlySpeechEventTypeSessionID = 20001,
/*!
* TTS合成数据消息
* -(void)onEvent:(int)eventType arg0:(int)arg0 arg1:(int)arg1 data:(NSData *)eventData
* 其中eventData中包含数据
* TTS合成数据消息<br>
* -(void)onEvent:(int)eventType arg0:(int)arg0 arg1:(int)arg1 data:(NSData *)eventData<br>
* 其中eventData中包含数据
*
*/
IFlySpeechEventTypeTTSBuffer = 21001,
@@ -110,9 +93,9 @@ typedef NS_ENUM(NSUInteger,IFlySpeechEventType){
IFlySpeechEventTypeTTSCancel = 21002,
/*!
* IVW onshot 听写 or 识别结果
* 在消息到达时,第2个参数arg1包含是否为最后一个结果:1为是,0为否;
* 第4个参数data中包含数据通过指定KEY为KCIFlySpeechEventKeyIVWResult获取.
* IVW onshot 听写 or 识别结果<br>
* 在消息到达时,第2个参数arg1包含是否为最后一个结果:1为是,0为否;<br>
* 第4个参数data中包含数据通过指定KEY为KCIFlySpeechEventKeyIVWResult获取.
*/
IFlySpeechEventTypeIVWResult = 22001,
@@ -129,17 +112,14 @@ typedef NS_ENUM(NSUInteger,IFlySpeechEventType){
IFlySpeechEventTypeRecordStop= 22003,
/*!
* 服务端音频url
* 在消息到达时,
* 第4个参数data,包含数据,通过
* 指定KEY为KCIFlySpeechEventKeyAudioUrl获取.
* 服务端音频url<br>
* 在消息到达时,第4个参数data,包含数据,通过指定KEY为KCIFlySpeechEventKeyAudioUrl获取.
*/
IFlySpeechEventTypeAudioUrl = 23001,
/*!
* 变声数据结果返回
*
* 设置voice_change参数获取结果.
* 变声数据结果返回<br>
* 设置voice_change参数获取结果.
*/
IFlySpeechEventTypeVoiceChangeResult = 24001

View File

@@ -14,12 +14,14 @@
#define IFLY_AUDIO_SOURCE_STREAM @"-1"
/*!
* 语音识别类
* 此类现在设计为单例你在使用中只需要创建此对象不能调用release/dealloc函数去释放此对象。所有关于语音识别的操作都在此类中。
* 语音识别类<br>
* 此类现在设计为单例你在使用中只需要创建此对象不能调用release/dealloc函数去释放此对象。所有关于语音识别的操作都在此类中。
*/
@interface IFlySpeechRecognizer : NSObject<IFlySpeechRecognizerDelegate>
/** 设置委托对象 */
/*!
* 设置委托对象
*/
@property(nonatomic,assign) id<IFlySpeechRecognizerDelegate> delegate ;
/*!
@@ -74,24 +76,21 @@
/*!
* 设置识别引擎的参数
* 识别的引擎参数(key)取值如下:
* <table>
* <thead>
* <tr><th>*参数</th><th><em>描述</em></th>
* </tr>
* </thead>
* <tbody>
* <tr><td>domain</td><td>应用的领域: 取值为:iat、search、video、poi、music、asr<br/>iat普通文本听写<br/>search热词搜索<br/>video视频音乐搜索<br/>video视频音乐搜索<br/>asr关键词识别;</td></tr>
* <tr><td>vad_bos</td><td>前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位ms<br/>engine指定iat识别默认值为5000<br/>其他情况默认值为 4000范围 0-10000。</td></tr>
* <tr><td>vad_eos</td><td>后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,<br/>自动停止录音;单位:ms;<br/>sms 识别默认为 1800;<br/>其他默认值为 700范围 0-10000。</td></tr>
* <tr><td>sample_rate</td><td>采样率:目前支持的采样率设置有 16000 和 8000。</td></tr>
* <tr><td>asr_ptt</td><td>标点符号设置: 默认为 1当设置为 0 时,将返回无标点符号文本。</td></tr>
* <tr><td>result_type</td><td>返回结果的数据格式: 设置为jsonxmlplain默认为json。</td></tr>
* <tr><td>grammarID</td><td>识别的语法id: 只针对 domain 设置为”asr”的应用。</td></tr>
* <tr><td>asr_audio_path</td><td>音频文件名: 设置此参数后,将会自动保存识别的录音文件。<br/> 路径为Documents/(指定值)。<br/>不设置或者设置为nil则不保存音频。</td></tr>
* <tr><td>params</td><td>扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。</td></tr>
* </tbody>
* </table>
*
* 识别的引擎参数(key)取值如下:
*
* | 参数 | 描述 |
* |-----------------|-------------------------------------------------------|
* | domain | 应用的领域: 取值为:iat、search、video、poi、music、asr<br>iat普通文本听写<br>search热词搜索<br>video视频音乐搜索<br>asr关键词识别;|
* | vad_bos | 前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位ms<br>engine指定iat识别默认值为5000<br>其他情况默认值为 4000范围 0-10000。|
* | vad_eos | 后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,自动停止录音;单位:ms;<br>sms 识别默认值为 1800;<br>其他默认值为 700范围 0-10000。|
* | sample_rate | 采样率:目前支持的采样率设置有 16000 和 8000。|
* | asr_ptt | 标点符号设置: 默认为 1,当设置为 0 时,将返回无标点符号文本。|
* | result_type | 返回结果的数据格式: 可设置为jsonxmlplain默认为json。|
* | grammarID | 识别的语法id: 只针对 domain 设置为”asr”的应用。|
* | asr_audio_path | 音频文件名: 设置此参数后,将会自动保存识别的录音文件。<br>路径为Documents/(指定值)。<br>不设置或者设置为nil则不保存音频。|
* | params | 扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。|
*
* @param value 参数对应的取值
* @param key 识别引擎参数
*
@@ -110,16 +109,16 @@
/*!
* 开始识别
* 同时只能进行一路会话,这次会话没有结束不能进行下一路会话,否则会报错。若有需要多次回话,
* 请在onError回调返回后请求下一路回话。
*
* 同时只能进行一路会话这次会话没有结束不能进行下一路会话否则会报错。若有需要多次回话请在onCompleted回调返回后请求下一路回话。
*
* @return 成功返回YES失败返回NO
*/
- (BOOL) startListening;
/*!
* 停止录音
* 调用此函数会停止录音,并开始进行语音识别
* 停止录音<br>
* 调用此函数会停止录音,并开始进行语音识别
*/
- (void) stopListening;
@@ -141,22 +140,24 @@
grammarType:(NSString *)grammarType
grammarContent:(NSString *)grammarContent;
/** 是否正在识别
/*!
* 是否正在识别
*/
@property (nonatomic, readonly) BOOL isListening;
@end
/*!
* 音频流识别
* 音频流识别可以将文件分段写入
* 音频流识别<br>
* 音频流识别可以将文件分段写入
*/
@interface IFlySpeechRecognizer(IFlyStreamRecognizer)
/*!
* 写入音频流
* 此方法的使用示例如下:
* <pre><code>[_iFlySpeechRecognizer setParameter:@"audio_source" value:@"-1"];
*
* 此方法的使用示例如下:
* <pre><code>[_iFlySpeechRecognizer setParameter:@"-1" value:@"audio_source"];
* [_iFlySpeechRecognizer startListening];
* [_iFlySpeechRecognizer writeAudio:audioData1];
* [_iFlySpeechRecognizer writeAudio:audioData2];

View File

@@ -20,8 +20,8 @@ typedef void(^IFlyOnBuildFinishCompletionHandler)(NSString* grammarId,IFlySpeech
/*!
* 语音识别协议
* 在使用语音识别时,需要实现这个协议中的方法.
* 语音识别协议<br>
* 在使用语音识别时,需要实现这个协议中的方法.
*/
@protocol IFlySpeechRecognizerDelegate <NSObject>
@@ -29,18 +29,17 @@ typedef void(^IFlyOnBuildFinishCompletionHandler)(NSString* grammarId,IFlySpeech
/*!
* 识别结果回调
* 在进行语音识别过程中的任何时刻都有可能回调此函数你可以根据errorCode进行相应的处理
* 当errorCode没有错误时表示此次会话正常结束否则表示此次会话有错误发生。特别的当调用
* `cancel`函数时,引擎不会自动结束,需要等到回调此函数,才表示此次会话结束。在没有回调此函数
* 之前如果重新调用了`startListenging`函数则会报错误。
*
* 在进行语音识别过程中的任何时刻都有可能回调此函数你可以根据errorCode进行相应的处理当errorCode没有错误时表示此次会话正常结束否则表示此次会话有错误发生。特别的当调用`cancel`函数时,引擎不会自动结束,需要等到回调此函数,才表示此次会话结束。在没有回调此函数之前如果重新调用了`startListenging`函数则会报错误。
*
* @param errorCode 错误描述
*/
- (void) onError:(IFlySpeechError *) errorCode;
- (void) onCompleted:(IFlySpeechError *) errorCode;
/*!
* 识别结果回调
* 在识别过程中可能会多次回调此函数,你最好不要在此回调函数中进行界面的更改等操作,只需要将回调的结果保存起来。
*
* 在识别过程中可能会多次回调此函数,你最好不要在此回调函数中进行界面的更改等操作,只需要将回调的结果保存起来。<br>
* 使用results的示例如下
* <pre><code>
* - (void) onResults:(NSArray *) results{
@@ -60,36 +59,36 @@ typedef void(^IFlyOnBuildFinishCompletionHandler)(NSString* grammarId,IFlySpeech
@optional
/*!
* 音量变化回调
* 在录音过程中,回调音频的音量。
* 音量变化回调<br>
* 在录音过程中,回调音频的音量。
*
* @param volume -[out] 音量范围从0-30
*/
- (void) onVolumeChanged: (int)volume;
/*!
* 开始录音回调
* 当调用了`startListening`函数之后,如果没有发生错误则会回调此函数。
* 如果发生错误则回调onError:函数
* 开始录音回调<br>
* 当调用了`startListening`函数之后,如果没有发生错误则会回调此函数。<br>
* 如果发生错误则回调onCompleted:函数
*/
- (void) onBeginOfSpeech;
/*!
* 停止录音回调
* 当调用了`stopListening`函数或者引擎内部自动检测到断点,如果没有发生错误则回调此函数。
* 如果发生错误则回调onError:函数
* 停止录音回调<br>
* 当调用了`stopListening`函数或者引擎内部自动检测到断点,如果没有发生错误则回调此函数。<br>
* 如果发生错误则回调onCompleted:函数
*/
- (void) onEndOfSpeech;
/*!
* 取消识别回调
* 当调用了`cancel`函数之后会回调此函数在调用了cancel函数和回调onError之前会有一个
* 取消识别回调<br>
* 当调用了`cancel`函数之后会回调此函数在调用了cancel函数和回调onCompleted之前会有一个<br>
* 短暂时间,您可以在此函数中实现对这段时间的界面显示。
*/
- (void) onCancel;
#ifdef _EDUCATION_
/**
/*!
* 返回音频Key
*
* @param key 音频Key
@@ -98,8 +97,8 @@ typedef void(^IFlyOnBuildFinishCompletionHandler)(NSString* grammarId,IFlySpeech
#endif
/**
* 扩展事件回调
/*!
* 扩展事件回调<br>
* 根据事件类型返回额外的数据
*
* @param eventType 事件类型具体参见IFlySpeechEventType的IFlySpeechEventTypeVoiceChangeResult枚举。

View File

@@ -56,20 +56,15 @@
/*!
* 设置合成参数
* <table>
* <thead>
* <tr><th>参数</th><th><em>描述</em></th>
* </tr>
* </thead>
* <tbody>
* <tr><td>speed</td><td>合成语速,取值范围 0~100</td></tr>
* <tr><td>volume</td><td>合成的音量,取值范围 0~100</td></tr>
* <tr><td>voice_name</td><td>默认为”xiaoyan”可以设置的参数列表可参考个性化发音人列表</td></tr>
* <tr><td>sample_rate</td><td>采样率:目前支持的采样率设置有 16000 和 8000。</td></tr>
* <tr><td>tts_audio_path</td><td>音频文件名 设置此参数后,将会自动保存合成的音频文件。<br/>路径为Documents/(指定值)。不设置或者设置为nil则不保存音频。</td></tr>
* <tr><td>params</td><td>扩展参数: 对于一些特殊的参数可在此设置。</td></tr>
* </tbody>
* </table>
*
* | 参数 | 描述 |
* |-----------------|----------------------------------------------------|
* | speed | 合成语速,取值范围 0~100 |
* | volume | 合成的音量,取值范围 0~100 |
* | voice_name | 默认为”xiaoyan”可以设置的参数列表可参考个性化发音人列表 |
* | sample_rate | 采样率:目前支持的采样率设置有 16000 和 8000。 |
* | tts_audio_path | 音频文件名 设置此参数后,将会自动保存合成的音频文件。<br>路径为Documents/(指定值)。不设置或者设置为nil则不保存音频。|
* | params | 扩展参数: 对于一些特殊的参数可在此设置。 |
*
* @param value 参数取值
* @param key 合成参数
@@ -88,16 +83,16 @@
-(NSString*) parameterForKey:(NSString *)key;
/*!
* 开始合成(播放)
* 调用此函数进行合成,如果发生错误会回调错误`onCompleted`
* 开始合成(播放)<br>
* 调用此函数进行合成,如果发生错误会回调错误`onCompleted`
*
* @param text 合成的文本,最大的字节数为1k
*/
- (void) startSpeaking:(NSString *)text;
/*!
* 开始合成(不播放)
* 调用此函数进行合成,如果发生错误会回调错误`onCompleted`
* 开始合成(不播放)<br>
* 调用此函数进行合成,如果发生错误会回调错误`onCompleted`
*
* @param text 合成的文本,最大的字节数为1k
* @param uri 合成后,保存再本地的音频路径
@@ -105,8 +100,8 @@
-(void)synthesize:(NSString *)text toUri:(NSString*)uri;
/*!
* 暂停播放
* 暂停播放之后,合成不会暂停,仍会继续,如果发生错误则会回调错误`onCompleted`
* 暂停播放<br>
* 暂停播放之后,合成不会暂停,仍会继续,如果发生错误则会回调错误`onCompleted`
*/
- (void) pauseSpeaking;

View File

@@ -11,15 +11,15 @@
@class IFlySpeechError;
/**
/*!
* 语音合成回调
*/
@protocol IFlySpeechSynthesizerDelegate <NSObject>
@required
/**
* 结束回调
/*!
* 结束回调<br>
* 当整个合成结束之后会回调此函数
*
* @param error 错误码
@@ -28,12 +28,12 @@
@optional
/**
/*!
* 开始合成回调
*/
- (void) onSpeakBegin;
/**
/*!
* 缓冲进度回调
*
* @param progress 缓冲进度0-100
@@ -41,33 +41,34 @@
*/
- (void) onBufferProgress:(int) progress message:(NSString *)msg;
/**
/*!
* 播放进度回调
*
* @param progress 当前播放进度0-100
* @param beginPos 当前播放文本的起始位置0-100
* @param endPos 当前播放文本的结束位置0-100
* @param beginPos 当前播放文本的起始位置(按照字节计算),对于汉字(2字节)需2处理
* @param endPos 当前播放文本的结束位置(按照字节计算),对于汉字(2字节)需2处理
*/
- (void) onSpeakProgress:(int) progress beginPos:(int)beginPos endPos:(int)endPos;
/**
/*!
* 暂停播放回调
*/
- (void) onSpeakPaused;
/**
* 恢复播放回调
/*!
* 恢复播放回调<br>
* 注意此回调方法SDK内部不执行播放恢复全部在onSpeakBegin中执行
*/
- (void) onSpeakResumed;
/**
* 正在取消回调
* 当调用`cancel`之后会回调此函数
/*!
* 正在取消回调<br>
* 注意此回调方法SDK内部不执行
*/
- (void) onSpeakCancel;
/**
* 扩展事件回调
/*!
* 扩展事件回调<br>
* 根据事件类型返回额外的数据
*
* @param eventType 事件类型具体参见IFlySpeechEventType枚举。目前只支持EVENT_TTS_BUFFER也就是实时返回合成音频。

View File

@@ -1,134 +0,0 @@
//
// IFlySpeechUnderstander.h
// MSC
//
// Created by iflytek on 2014-03-12.
// Copyright (c) 2014年 iflytek. All rights reserved.
//
#import <Foundation/Foundation.h>
@class IFlySpeechError;
@protocol IFlySpeechRecognizerDelegate;
/*!
* 语义理解接口
*/
@interface IFlySpeechUnderstander : NSObject
/*!
* 是否正在语义理解
*/
@property (readonly) BOOL isUnderstanding;
/*!
* 设置委托对象
*/
@property(nonatomic,retain) id<IFlySpeechRecognizerDelegate> delegate ;
/*!
* 创建语义理解对象的单例
*
* @return 语义理解对象
*/
+(instancetype) sharedInstance;
/*!
* 开始义理解
* 同时只能进行一路会话这次会话没有结束不能进行下一路会话否则会报错。若有需要多次回话请在onError回调返回后请求下一路回话。
*
* @return 成功返回YES失败返回NO
*/
- (BOOL) startListening;
/*!
* 停止录音
* 调用此函数会停止录音,并开始进行语义理解
*/
- (void) stopListening;
/*!
* 取消本次会话
*/
- (void) cancel;
/*
* | ------------- |-----------------------------------------------------------
* | 参数 | 描述
* | ------------- |-----------------------------------------------------------
* | domain |应用的领域: 取值为:iat、search、video、poi、music、asr
* | | iat普通文本听写
* | | search热词搜索
* | | video视频音乐搜索
* | | asr关键词识别;
* | ------------- |-----------------------------------------------------------
* | vad_bos |前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位ms
* | | engine指定iat识别默认值为5000
* | | 其他情况默认值为 4000范围 0-10000。
* | ------------- |-----------------------------------------------------------
* | vad_eos |后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,
* | | 自动停止录音;单位:ms;
* | | sms 识别默认值为 1800;
* | | 其他默认值为 700范围 0-10000。
* | ------------- |-----------------------------------------------------------
* | sample_rate |采样率:目前支持的采样率设置有 16000 和 8000。
* | ------------- |-----------------------------------------------------------
* | asr_ptt |标点符号设置: 默认为 1当设置为 0 时,将返回无标点符号文本。
* | ------------- |-----------------------------------------------------------
* | result_type |返回结果的数据格式: 可设置为jsonxmlplain默认为json。
* | ------------- |-----------------------------------------------------------
* | grammarID |识别的语法id: 只针对 domain 设置为”asr”的应用。
* | ------------- |-----------------------------------------------------------
* | asr_audio_path|音频文件名: 设置此参数后,将会自动保存识别的录音文件。
* | | 路径为Documents/(指定值)。
* | | 不设置或者设置为nil则不保存音频。
* | ------------- |-----------------------------------------------------------
* | params |扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。
* | ------------- |-----------------------------------------------------------
*
*/
/*!
* 设置语义理解引擎的参数
* 语义理解的引擎参数(key)取值如下:
* <table>
* <thead>
* <tr><th>*参数</th><th><em>描述</em></th>
* </tr>
* </thead>
* <tbody>
* <tr><td>domain</td><td>应用的领域: 取值为:iat、search、video、poi、music、asr<br/>iat普通文本听写<br/>search热词搜索<br/>video视频音乐搜索<br/>video视频音乐搜索<br/>asr关键词识别;</td></tr>
* <tr><td>vad_bos</td><td>前端点检测: 静音超时时间,即用户多长时间不说话则当做超时处理; 单位ms<br/>engine指定iat识别默认值为5000<br/>其他情况默认值为 4000范围 0-10000。</td></tr>
* <tr><td>vad_eos</td><td>后断点检测: 后端点静音检测时间,即用户停止说话多长时间内即认为不再输入,<br/>自动停止录音;单位:ms;<br/>sms 识别默认值为 1800;<br/>其他默认值为 700范围 0-10000。</td></tr>
* <tr><td>sample_rate</td><td>采样率:目前支持的采样率设置有 16000 和 8000。</td></tr>
* <tr><td>asr_ptt</td><td>标点符号设置: 默认为 1当设置为 0 时,将返回无标点符号文本。</td></tr>
* <tr><td>result_type</td><td>返回结果的数据格式: 可设置为jsonxmlplain默认为json。</td></tr>
* <tr><td>grammarID</td><td>识别的语法id: 只针对 domain 设置为”asr”的应用。</td></tr>
* <tr><td>asr_audio_path</td><td>音频文件名: 设置此参数后,将会自动保存识别的录音文件。<br/> 路径为Documents/(指定值)。<br/>不设置或者设置为nil则不保存音频。</td></tr>
* <tr><td>params</td><td>扩展参数: 对于一些特殊的参数可在此设置,一般用于设置语义。</td></tr>
* </tbody>
* </table>
* @param value 参数对应的取值
* @param key 语义理解引擎参数
*
* @return 成功返回YES失败返回NO
*/
-(BOOL) setParameter:(NSString *) value forKey:(NSString*)key;
/*!
* 写入音频流
*
* @param audioData 音频数据
*
* @return 写入成功返回YES写入失败返回NO
*/
- (BOOL) writeAudio:(NSData *) audioData;
/*!
* 销毁语义理解对象。
*
* @return 成功返回YES失败返回NO
*/
- (BOOL) destroy;
@end

View File

@@ -12,73 +12,73 @@
@class IFlySpeechError;
/**
/*!
* 引擎模式
*/
typedef NS_ENUM(NSUInteger,IFlyEngineMode){
/**
/*!
* 云端使用MSC本地优先使用语记
*/
IFlyEngineModeAuto = 0,
/**
/*!
* 只使用MSC
*/
IFlyEngineModeMsc,
/**
/*!
* 本地只使用语记(受平台限制,云端无法使用语记)
*/
IFlyEngineModePlus,
};
/**
/*!
* 服务类型
*/
typedef NS_ENUM(NSUInteger,IFlySpeechPlusServiceType){
/**
/*!
* 打开语记主界面
*/
IFlySpeechPlusServiceTypeNone=0,
/**
/*!
* 获取合成资源
*/
IFlySpeechPlusServiceTypeTTS,
/**
/*!
* 获取识别资源(未开放)
*/
IFlySpeechPlusServiceTypeISR,
/**
/*!
* 获取唤醒资源(未开放)
*/
IFlySpeechPlusServiceTypeIVW,
} ;
/** 语记返回回调
/*! 语记返回回调
*/
@protocol IFlySpeechplusDelegate <NSObject>
/**
/*!
* 发生错误
*
* @param errorCode 错误码
*/
- (void)onError:(int)errorCode;
- (void)onCompleted:(int)errorCode;
/**
/*!
* 服务正常结束
*/
- (void)onCompleted;
@end
/**
/*!
* 用户配置
*/
@interface IFlySpeechUtility : NSObject
/*!
* 创建用户语音配置
* 注册应用请前往语音云开发者网站。<br>
* 创建用户语音配置<br>
* 注册应用请前往语音云开发者网站。<br>
* 网站http://www.xfyun.cn
*
* @param params 启动参数必须保证appid参数传入示例appid=123456
@@ -111,7 +111,7 @@ typedef NS_ENUM(NSUInteger,IFlySpeechPlusServiceType){
*/
-(BOOL) setParameter:(NSString *) value forKey:(NSString*)key;
/**
/*!
* 获取MSC引擎状态参数
*
* @param key 参数名
@@ -120,32 +120,32 @@ typedef NS_ENUM(NSUInteger,IFlySpeechPlusServiceType){
*/
- (NSString *)parameterForKey:(NSString *)key;
/**
/*!
* 引擎类型
*/
@property (nonatomic, readonly) IFlyEngineMode engineMode;
/**
/*!
* 语记协议委托
*/
@property (nonatomic, assign) id<IFlySpeechplusDelegate> delegate;
@end
/**
/*!
* 讯飞语记类别
*/
@interface IFlySpeechUtility (SpeechPlus)
/**
/*!
* 检查讯飞语记是否安装
*
* @return 已安装返回YES否则返回NO
*/
+ (BOOL)checkServiceInstalled;
/**
* 获取讯飞语记下载地址进行下载,安装完成后即可使用服务。
/*!
* 获取讯飞语记下载地址进行下载,安装完成后即可使用服务。<br>
* 下载地址需要通过[[UIApplication sharedApplication] openUrl:]打开
*
* @return 讯飞语记在App Store下载地址
@@ -153,9 +153,9 @@ typedef NS_ENUM(NSUInteger,IFlySpeechPlusServiceType){
+ (NSString *)componentUrl;
/**
* 注意:此接口废弃,不再需要使用
* 处理语记使用URL启动第三方应用程序时传递的数据
/*!
* 注意:此接口废弃,不再需要使用<br>
* 处理语记使用URL启动第三方应用程序时传递的数据<br>
* 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。
*
* @param url 语记启动第三方应用程序时传递过来的URL
@@ -164,7 +164,7 @@ typedef NS_ENUM(NSUInteger,IFlySpeechPlusServiceType){
*/
- (BOOL)handleOpenURL:(NSURL *)url iOS_EXCLUSIVE;
/**
/*!
* 打开讯飞语记获取相应类型服务0表示打开主界面
*
* @param serviceType 服务类型

View File

@@ -1,57 +0,0 @@
//
// TextUnderstand.h
// MSCDemo
//
// Created by iflytek on 4/24/14.
// Copyright (c) 2014 iflytek. All rights reserved.
//
#import <Foundation/Foundation.h>
@class IFlySpeechError;
/*!
* 文本转语义完成回调函数
*
* @param result 成功,返回文本语义理解结果
* @param error 错误描述
*/
typedef void(^IFlyUnderstandTextCompletionHandler)(NSString* result, IFlySpeechError * error);
/*!
* 文本转语义类
*/
@interface IFlyTextUnderstander : NSObject
/*!
* 是否正在文本转语义
*/
@property (readonly, atomic) __block BOOL isUnderstanding;
/*!
* 文本转语义接口
* 输入文本内容,获取语义理解结果
*
* @param text 输入的文本内容
* @param completionHandler 文本转语义完成回调函数
*
* @return 错误码
*/
-(int) understandText:(NSString*)text withCompletionHandler:(IFlyUnderstandTextCompletionHandler) completionHandler;
/*!
* 设置文本转语义参数
*
* @param value 参数对应的取值
* @param key 文本转语义参数参数
*
* @return 成功返回YES失败返回NO
*/
-(BOOL) setParameter:(NSString *) value forKey:(NSString*)key;
/*!
* 取消本次会话
*/
-(void)cancel;
@end

View File

@@ -16,7 +16,8 @@
/*!
* 初始化对象
* 在进行初始化时,需要传入的格式如下:
*
* 在进行初始化时,需要传入的格式如下:
* <pre><code>{\"userword\":[{\"name\":\"iflytek\",\"words\":[\"科大讯飞\",
* \"云平台\",\"用户词条\",\"开始上传词条\"]}]}</code></pre>
*

View File

@@ -10,170 +10,74 @@
#import <Foundation/Foundation.h>
#import "IFlyVoiceWakeuperDelegate.h"
/**
版本描述唤醒1.0.0.1
语音唤醒资源占用iPhone5s实测
内存占用3M
CPU占用< 12%
唤醒服务接口时序描述
sharedInstance 创建唤醒实例
setParameter 设置服务参数
例:[_voiceWakeuper setParameter:@"wake" forKey:@"sst"];
sst 表示服务类型wake是唤醒enroll是注册
例:[_voiceWakeuper setParameter:@"m_wakeupResPath" forKey:@"ivw_wake_list"];
ivw_wake_list 表示唤醒资源的路径
例:[_voiceWakeuper setParameter:@"holdValue" forKey:@"ivw_threshold"];
ivw_threshold 表示唤醒资源的阀值holdValue形式
ID201530
每个数字代表对应资源的阀值15表示资源1阀值20表示资源2阀值30表示资源3阀值
本demo只有一个资源设置为ID20 则可
startListening启动服务
stopListening 取消服务,但是不释放内部资源
cancel 终止服务,并释放内部资源
*参数定义
* 服务设置参数
sst=wake表示唤醒
sst=enroll表示注册
SESSION_TYPE @"sst" //服务类型
WAKEUP @"wake" //唤醒
ENROLL @"enroll" //注册
* 唤醒时表示资源对应的阀值为输入值参数类型为ID:20;20;3
已ID为起始中间用“;”隔开表示公三个资源各自阀值对应为2020和3
IVW_THRESHOLD @"ivw_threshold" //唤醒词对应的门限
* 传入参数
主要是没有定义的参数依赖params传入
PARAM @"params"
* 训练,合并生成的资源路径
ivw_word_path=/abc/123/newpath.irf
IVW_WORD_PATH @"ivw_word_path"
* 业务成功后的会话持续状态
keep_alive 0:唤醒一次就结束1唤醒后继续
KEEP_ALIVE @"keep_alive"
* focus_type注册和唤醒的返回参数
wake 唤醒
enroll 注册
FOCUS_TYPE @"focus_type" //服务类型
* 服务状态
status=success 服务正常
status=failed 服务失败
status=done 注册完成
STATUS @"status" //服务状态
SUCESS @"success" //服务成功
FAILED @"failed" //服务失败
DONE @"done" //训练完成
* 唤醒结果的位置
ID @"id" //唤醒结果的id
* 唤醒资源的阀值
注册时返回,表示注册资源对应的阀值,为输出值
THRESHOLD @"threshold" //训练资源的阀值
* 服务结果的可信度
SCORE @"score" //服务结果可信度
* 为注册时返回,表示已经注册成功的次数
NUM @"num" //已训练成功次数
* 表示服务传入音频对应的起始点和结束点
BOS @"bos" //前端点
EOS @"eos" //后端点
* 录音方式,如果是外部数据,设置为-1通过WriteAudio送入音频
注意:目前紧紧支持唤醒服务,注册业务尚不支持
AUDIO_SOURCE @"audio_source"
* 表示资源合并操作
MERGE_RES_ACTION @"merge"
*/
#define IFLY_AUDIO_SOURCE_MIC @"1"
#define IFLY_AUDIO_SOURCE_STREAM @"-1"
/*!
* 语音唤醒
*/
@interface IFlyVoiceWakeuper : NSObject
{
}
/*!
* 代理
*/
@property (nonatomic, assign) id<IFlyVoiceWakeuperDelegate> delegate;
@property(assign) id<IFlyVoiceWakeuperDelegate> delegate;
/*!
* 是否正在唤醒
*/
@property (nonatomic, readonly) BOOL isListening;
/**
创建唤醒实例,采用单例模式
/*!
* 创建唤醒实例,采用单例模式
*/
+ (instancetype) sharedInstance;
/**
启动唤醒
返回值:YES 成功NO失败
/*!
* 启动唤醒
* 返回值:YES 成功NO失败
*/
-(BOOL) startListening;
/**
取消唤醒会话
注意与cancel的区别紧紧停止服务并不释放资源
/*!
* 停止录音
*/
-(BOOL) stopListening;
/**
获取工作参数
*/
-(NSString*) getParameter:(NSString *)key;
/**
设置工作参数
注意服务正在运行中,不能设置参数
*/
-(BOOL) setParameter:(NSString *) value forKey:(NSString*)key;
/**
取消唤醒会话,并释放内部资源
/*!
* 取消唤醒会话
*/
-(BOOL) cancel;
/**
唤醒业务更新,目前支持合并资源操作
/*!
* 获取工作参数
*/
//+(int) updateWords:(NSString *)action params:(NSString*) params;
-(NSString*) getParameter:(NSString *)key;
/**
写入录音数据
暂时紧紧支持唤醒的写入,注册服务尚不支持
/*!
* 设置工作参数<br>
* 注意服务正在运行中,不能设置参数
*/
//-(int) writeAudio:(const void*)buffer offset:(int)offset length:(int)length;
@property (readonly) BOOL isListening;
-(BOOL) setParameter:(NSString *) value forKey:(NSString*)key;
@end
/*!
* 音频流唤醒<br>
* 音频流唤醒可以将文件分段写入
*/
@interface IFlyVoiceWakeuper(IFlyStreamVoiceWakeuper)
/*!
* 写入音频流
*
* @param audioData 音频数据
*
* @return 写入成功返回YES写入失败返回NO
*/
- (BOOL) writeAudio:(NSData *) audioData;
@end

View File

@@ -13,70 +13,46 @@
@class IFlySpeechError;
/**
* 代理返回时序描述
onError 为唤醒会话错误反馈
onBeginOfSpeech 表示录音开始
onVolumeChanged 录音音量大小
onEndOfSpeech 录音结束当服务终止时返回onEndOfSpeech
onResult 服务结果反馈,内容定义如下
* 唤醒服务
例:
focus_type = wake 唤醒会话
wakeup_result_id = 0 唤醒词位置
wakeup_result_Score = 60 唤醒词可信度
* 注册服务
例:
focus_type = enroll 注册会话
enroll_success_num = 1 当前注册成功次数
current_enroll_status = success/failed 当前会话是否成功
wakeup_result_Score = 60 注册结果可信度
threshold = 10 当注册达到3次后反馈对应资源的阀值
*/
@protocol IFlyVoiceWakeuperDelegate <NSObject>
@optional
/**
录音开始
/*!
* 录音开始
*/
-(void) onBeginOfSpeech;
/**
录音结束
/*!
* 录音结束
*/
-(void) onEndOfSpeech;
/**
会话错误
@param errorCode 错误描述类,
*/
- (void) onError:(IFlySpeechError *) error;
/**
唤醒
resultID:唤醒词位置
/*!
* 会话错误
*
* @param errorCode 错误描述类,
*/
-(void) onResult:(NSMutableDictionary *)resultArray;
- (void) onCompleted:(IFlySpeechError *) error;
/**
音量反馈,返回频率与录音数据返回回调频率一致
volume:音量值
/*!
* 唤醒结果
*
* @param resultDic 唤醒结果字典
*/
-(void) onResult:(NSMutableDictionary *)resultDic;
/*!
* 音量反馈,返回频率与录音数据返回回调频率一致
*
* @param volume 音量值
*/
- (void) onVolumeChanged: (int)volume;
/** 扩展事件回调
根据事件类型返回额外的数据
/*!
* 扩展事件回调<br>
* 根据事件类型返回额外的数据
*
@param eventType 事件类型具体参见IFlySpeechEvent枚举。
*/
- (void) onEvent:(int)eventType isLast:(BOOL)isLast arg1:(int)arg1 data:(NSMutableDictionary *)eventData;

Binary file not shown.