This commit is contained in:
zher52 2020-11-03 17:34:54 +08:00
commit edc27c925c
52 changed files with 824 additions and 1508 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

@ -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属性值为AVAudioSessionCategoryPlayAndRecordAVAudioSessionCategoryOptionDefaultToSpeakerAVAudioSessionCategoryOptionAllowBluetooth选项Category属性值且isMPCenter为NOCategory属性值为AVAudioSessionCategoryPlaybackAVAudioSessionCategoryOptionMixWithOthersCategory属性值且isMPCenter为YES
*
* @param isMPCenter MPPlayerCenter01AVAudioSession的Category属性值不为AVAudioSessionCategoryPlayAndRecord时设置有效
*/
+(void) initPlayingAudioSession:(BOOL)isMPCenter;
/**
* ,
*
* AVAudioSession的Category属性值为AVAudioSessionCategoryPlayAndRecordAVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowBluetooth
*
* @return YESNO
*/
+(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 YESNO
*/
-(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 YESNO
*/
- (BOOL) start;
/**
/*!
*
*/
- (void) stop;
/**
/*!
*
*
* @param rate -[in] 8k/16k
*/
- (void) setSample:(NSString *) rate;
/*
*
/*!
*
*/
- (void) setPowerCycle:(float) cycle;
/**
/*!
*
*
* @param savePath
*/
-(void) setSaveAudioPath:(NSString *)savePath;
/*!
*
*
* @return YESNO
*/
-(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>: :iatsearchvideopoimusicasr<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>: jsonxmlplainjson</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 | : :iatsearchvideopoimusicasr<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 | : jsonxmlplainjson|
* | 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;
/*!
*
* jsonxmlplainjson
* jsonxmlplainjson
*
* @return key
*/
@ -107,15 +113,15 @@
+(NSString*)DATA_TYPE;
/*!
*
* ms30000
* <br>
* ms30000
*
* @return key
*/
+(NSString*)SPEECH_TIMEOUT;
/*!
*
* <br>
* ms20000
*
* @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 ;
/** 合成数据即时返回
*/
/**
/*!
*
* 1onEvent回调返回
*
* 1onEvent回调返回<br>
* 100
*
* @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>
* -1WriteAudio接口送入音频
*
* @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;
/*!
*
* 10
* <br>
* 10
*
* @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;
/**
/*!
* mfvivpifr
*
* @return key
*/
+ (NSString*)MFV_SUB;
/**
* sub有不同的sst取值
* ifrenrollverifyidentifyreenrollquerydelete
/*!
* sub有不同的sst取值<br>
* ifrenrollverifyidentifyreenrollquerydelete<br>
* ivpenrolltrainverifyreenrollquerydeletedownload
*
* @return key
*/
+ (NSString*)MFV_SST;
/**
/*!
* 使sinmixagi
*
* @return key
*/
+ (NSString*)MFV_VCM;
/**
/*!
* ivpifrivp|ifr
*
* @return key
*/
+ (NSString*)MFV_SCENES;
/**
/*!
* (affirmance cycles)使
*
* @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>
* 160008000;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 YESNO
*/
- (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 YESNO
*/
- (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
* 4data Key为[IFlySpeechConstant IST_AUDIO_PATH],.
* [IFlySpeechTranscripter getParameter:[IFlySpeechConstant IST_AUDIO_PATH]],
* .
/*!
* <br>
* onEvent第4个参数dataKey为[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
* ,2arg1包含是否为最后一个结果:1,0;
* 4data中包含数据KEY为KCIFlySpeechEventKeyIVWResult获取.
* IVW onshot or <br>
* ,2arg1包含是否为最后一个结果:1,0;<br>
* 4data中包含数据KEY为KCIFlySpeechEventKeyIVWResult获取.
*/
IFlySpeechEventTypeIVWResult = 22001,
@ -129,17 +112,14 @@ typedef NS_ENUM(NSUInteger,IFlySpeechEventType){
IFlySpeechEventTypeRecordStop= 22003,
/*!
* url
* ,
* 4data,,
* KEY为KCIFlySpeechEventKeyAudioUrl获取.
* url<br>
* ,4data,,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>: :iatsearchvideopoimusicasr<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>: jsonxmlplainjson</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 | : :iatsearchvideopoimusicasr<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 | : jsonxmlplainjson|
* | grammarID | id: domain asr|
* | asr_audio_path | : <br>Documents/()<br>nil|
* | params | : |
*
* @param value
* @param key
*
@ -110,16 +109,16 @@
/*!
*
*
* onError回调返回后请求下一路回话
*
* onCompleted回调返回后请求下一路回话
*
* @return YESNO
*/
- (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 YESNO
*/
- (BOOL) startListening;
/*!
*
*
*/
- (void) stopListening;
/*!
*
*/
- (void) cancel;
/*
* | ------------- |-----------------------------------------------------------
* | |
* | ------------- |-----------------------------------------------------------
* | domain |: :iatsearchvideopoimusicasr
* | | 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 |: jsonxmlplainjson
* | ------------- |-----------------------------------------------------------
* | 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>: :iatsearchvideopoimusicasr<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>: jsonxmlplainjson</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 YESNO
*/
-(BOOL) setParameter:(NSString *) value forKey:(NSString*)key;
/*!
*
*
* @param audioData
*
* @return YESNO
*/
- (BOOL) writeAudio:(NSData *) audioData;
/*!
*
*
* @return YESNO
*/
- (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 YESNO
*/
+ (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 YESNO
*/
-(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
151202303
demo只有一个资源设置为ID20
startListening启动服务
stopListening
cancel
*
*
sst=wake表示唤醒
sst=enroll表示注册
SESSION_TYPE @"sst" //服务类型
WAKEUP @"wake" //唤醒
ENROLL @"enroll" //注册
* ID:20;20;3
ID为起始;20203
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" //后端点
* -1WriteAudio送入音频
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 YESNO
*/
- (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.