summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-02-19 10:57:31 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-02-19 10:57:31 -0800
commit848d1df23e9a0c0d98cb45905355eee05ce3fa34 (patch)
tree638162846c83a4f495f081207abc34d55f13b4d1
parent2f8ec03aa4809cec2b0944ca9bf1c7783e11b4ae (diff)
downloadsrec-848d1df23e9a0c0d98cb45905355eee05ce3fa34.tar.gz
auto import from //branches/cupcake/...@132276
-rw-r--r--config/en.us/Android.mk13
-rw-r--r--config/en.us/dictionary/cmu6plus.ok.zipbin713142 -> 628151 bytes
-rw-r--r--srec_jni/android_speech_srec_MicrophoneInputStream.cpp30
3 files changed, 28 insertions, 15 deletions
diff --git a/config/en.us/Android.mk b/config/en.us/Android.mk
index 931b431..9f5db6b 100644
--- a/config/en.us/Android.mk
+++ b/config/en.us/Android.mk
@@ -76,15 +76,24 @@ $(G2G_INSTALL_PATH)/%.g2g: $(LOCAL_PATH)/grammars/%.grxml $(GRXML) $(MAKE_G2G) $
# the grxml compiler expects this (and other) data files to be here.
# $ g4 edit external/srec/config/en.us/dictionary/cmu6plus.ok.zip
# $ make cmu6plus.ok.zip
+#
+# To make the resulting zip as small as possible, install advzip from
+# the advancecomp suite of compression utilities. (On ubuntu,
+# "apt-get install advancecomp".) It makes the output about 10% smaller.
+# This make rule will fall back to 'zip' if 'advzip' is not
+# available.
#-----------------------------------------------------------------
CMU2NUANCE=$(HOST_OUT_EXECUTABLES)/cmu2nuance
DICT_DIR=$(ASR_ROOT_DIR)/config/en.us/dictionary
cmu6plus.ok.zip: $(CMU2NUANCE) $(DICT_DIR)/c0.6 $(DICT_DIR)/numbers.ok $(DICT_DIR)/fixit.ok $(DICT_DIR)/enroll.ok
- $(CMU2NUANCE) < $(DICT_DIR)/c0.6 > $(DICT_DIR)/c0.6.ok
+ $(CMU2NUANCE) < $(DICT_DIR)/c0.6 > $(DICT_DIR)/c0.6.ok
sort -u $(DICT_DIR)/c0.6.ok $(DICT_DIR)/numbers.ok $(DICT_DIR)/fixit.ok $(DICT_DIR)/enroll.ok > $(DICT_DIR)/cmu6plus.ok
- (cd $(DICT_DIR)/ && zip cmu6plus.ok.zip cmu6plus.ok)
+ $(hide) (cd $(DICT_DIR)/ && advzip -a -4 cmu6plus.ok.zip cmu6plus.ok || \
+ (zip cmu6plus.ok.zip cmu6plus.ok && \
+ echo -e "\n+++ advzip not installed; fell back to zip\n cmu6plus.ok.zip (`du -h cmu6plus.ok.zip | cut -f 1`) could be ~10% smaller with advzip\n"))
+
#-----------------------------------------------------------------
diff --git a/config/en.us/dictionary/cmu6plus.ok.zip b/config/en.us/dictionary/cmu6plus.ok.zip
index d556a84..3047ed0 100644
--- a/config/en.us/dictionary/cmu6plus.ok.zip
+++ b/config/en.us/dictionary/cmu6plus.ok.zip
Binary files differ
diff --git a/srec_jni/android_speech_srec_MicrophoneInputStream.cpp b/srec_jni/android_speech_srec_MicrophoneInputStream.cpp
index fdfdaed..6b0ac19 100644
--- a/srec_jni/android_speech_srec_MicrophoneInputStream.cpp
+++ b/srec_jni/android_speech_srec_MicrophoneInputStream.cpp
@@ -59,27 +59,29 @@ static JNIEXPORT jint JNICALL Java_android_speech_srec_Recognizer_AudioRecordNew
android::AudioSystem::PCM_16_BIT, 1,
fifoFrames, 0);
if (ar == NULL) {
- throwException(env, "java/lang/IllegalArgumentException",
- "new AudioRecord::AudioRecord() failed", 0);
+ LOGE("Error creating AudioRecord");
}
- else if (int rtn = ar->initCheck()) {
- delete ar;
- ar = NULL;
- throwException(env, "java/lang/IllegalStateException",
- "AudioRecord::initCheck() failed - another instance open?", rtn);
+ else {
+ status_t s = ar->initCheck();
+ if (s != NO_ERROR) {
+ delete ar;
+ ar = NULL;
+ LOGE("initCheck error %d ", s);
+ }
}
+ LOGV("new AudioRecord(%p)", ar);
return (int)ar;
}
-static JNIEXPORT void JNICALL Java_android_speech_srec_Recognizer_AudioRecordStart
+static JNIEXPORT int JNICALL Java_android_speech_srec_Recognizer_AudioRecordStart
(JNIEnv *env, jclass clazz, jint audioRecord) {
- if (int rtn = ((AudioRecord*)audioRecord)->start()) {
- throwException(env, "java/lang/IllegalStateException", "AudioRecord::start failed %d", rtn);
- }
+ LOGV("start = 0x%x", audioRecord);
+ return (int)(((AudioRecord*)audioRecord)->start());
}
static JNIEXPORT jint JNICALL Java_android_speech_srec_Recognizer_AudioRecordRead
(JNIEnv *env, jclass clazz, jint audioRecord, jbyteArray array, jint offset, jint length) {
+ LOGV("read(0x%x)", audioRecord);
jbyte buffer[4096];
if (length > (int)sizeof(buffer)) length = sizeof(buffer);
length = ((AudioRecord*)audioRecord)->read(buffer, length);
@@ -93,13 +95,15 @@ static JNIEXPORT jint JNICALL Java_android_speech_srec_Recognizer_AudioRecordRea
static JNIEXPORT void JNICALL Java_android_speech_srec_Recognizer_AudioRecordStop
(JNIEnv *env, jclass clazz, jint audioRecord) {
+ LOGV("stop(0x%x)", audioRecord);
if (int rtn = ((AudioRecord*)audioRecord)->stop()) {
- throwException(env, "java/lang/IllegalStateException", "AudioRecord::stop failed %d", rtn);
+ throwException(env, "java/io/IOException", "AudioRecord::stop failed %d", rtn);
}
}
static JNIEXPORT void JNICALL Java_android_speech_srec_Recognizer_AudioRecordDelete
(JNIEnv *env, jclass clazz, jint audioRecord) {
+ LOGV("delete(0x%x)", audioRecord);
delete (AudioRecord*)audioRecord;
}
@@ -110,7 +114,7 @@ static JNIEXPORT void JNICALL Java_android_speech_srec_Recognizer_AudioRecordDel
static JNINativeMethod gMethods[] = {
/* name, signature, funcPtr */
{"AudioRecordNew", "(II)I", (void*)Java_android_speech_srec_Recognizer_AudioRecordNew},
- {"AudioRecordStart", "(I)V", (void*)Java_android_speech_srec_Recognizer_AudioRecordStart},
+ {"AudioRecordStart", "(I)I", (void*)Java_android_speech_srec_Recognizer_AudioRecordStart},
{"AudioRecordRead", "(I[BII)I", (void*)Java_android_speech_srec_Recognizer_AudioRecordRead},
{"AudioRecordStop", "(I)V", (void*)Java_android_speech_srec_Recognizer_AudioRecordStop},
{"AudioRecordDelete", "(I)V", (void*)Java_android_speech_srec_Recognizer_AudioRecordDelete},