1

我在这里尝试用俄语替换英语声学模型时遇到了一个问题:

recognizer = SpeechRecognizerSetup.defaultSetup()
                .setAcousticModel(new File(assetsDir, "ru"))

错误是:“java.lang.ClassNotFoundException:edu.cmu.pocketsphinx.SphinxBaseJNI”

我从sourceforge下载了所有档案并尝试了每组声学模型:zero_ru.cd_ptm_4000、zero_ru.cd_cont_4000、zero_ru.cd_semi_4000、cmusphinx-ru-5.2,方法是将它们粘贴到文件夹 ...\models\src\main\ pocketsphinx-android-demo-master 应用程序的 assets\sync\en-us-ptm。当然,我也更换了英语词典。在此方法中配置 SpeechRecognizer 的“-hmm”内容时发生错误:

public SpeechRecognizerSetup setAcousticModel(File model) {
        return this.setString("-hmm", model.getPath());
    }

在 pocketsphinx 的 SpeechRecognizerSetup.class 中。缺少哪些课程?英语语音识别在我的 KitKat 4.4.2 上非常完美

IDE:Android Studio 2.33

摇篮版本:3.3

安卓插件版本:2.3.3

gradle.build 应用程序:

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.0'
    defaultConfig {
        applicationId "edu.cmu.sphinx.pocketsphinx"
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 2
        versionName "1.1"
    }
    productFlavors {
    }
}

dependencies {
    compile project(':aars')
    compile project(':models')
    compile 'com.android.support:appcompat-v7:25.0.0'

编辑 过的Logcat:

 E/cmusphinx: ERROR: "lda.c", line 71: LDA incompatible with multi-stream features (n_stream = 4)
 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                       Process: edu.cmu.sphinx.pocketsphinx, PID: 23373
                                                       java.lang.RuntimeException: An error occured while executing doInBackground()
                                                           at android.os.AsyncTask$3.done(AsyncTask.java:300)
                                                           at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                                           at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                                           at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                           at java.lang.Thread.run(Thread.java:841)
                                                        Caused by: java.lang.RuntimeException: new_Decoder returned -1
                                                           at edu.cmu.pocketsphinx.PocketSphinxJNI.new_Decoder__SWIG_1(Native Method)
                                                           at edu.cmu.pocketsphinx.Decoder.<init>(Decoder.java:43)
                                                           at edu.cmu.pocketsphinx.SpeechRecognizer.<init>(SpeechRecognizer.java:79)
                                                           at edu.cmu.pocketsphinx.SpeechRecognizerSetup.getRecognizer(SpeechRecognizerSetup.java:74)
                                                           at edu.cmu.pocketsphinx.demo.PocketSphinxActivity.setupRecognizer(PocketSphinxActivity.java:222)
                                                           at edu.cmu.pocketsphinx.demo.PocketSphinxActivity.access$000(PocketSphinxActivity.java:55)
                                                           at edu.cmu.pocketsphinx.demo.PocketSphinxActivity$1.doInBackground(PocketSphinxActivity.java:108)
                                                           at edu.cmu.pocketsphinx.demo.PocketSphinxActivity$1.doInBackground(PocketSphinxActivity.java:102)
                                                           at android.os.AsyncTask$2.call(AsyncTask.java:288)
                                                           at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                                                           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                                           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                                           at java.lang.Thread.run(Thread.java:841) 

任何帮助将不胜感激!

4

2 回答 2

0

E/cmusphinx:错误:“lda.c”,第 71 行:LDA 与多流功能不兼容(n_stream = 4)

此错误表示您忘记feature_transform从模型文件夹中删除,或者它仍保留在 sdcard 上。模型文件夹中的额外文件会中断模型加载。你需要

  1. 清理手机 SD 卡上的模型文件夹。
  2. 确保资产文件夹中没有额外的文件。
于 2017-09-14T22:14:51.917 回答
0

因此,在我的工作配置中,我使用了来自 “zero_ru_cont_8k_v3.tar.gz”档案的“ru.txt”字典和位于该档案的“zero_ru.cd_ptm_4000”目录中的声学模型。在我的应用程序中,我只留下了关键字激活搜索和基于语法的搜索。我不得不将 ru.txt 和 menu.dict 文件扩展名分别更改为 .dict 和 .jsgf。从此应用程序应该在您正确放置库和资产的条件下工作,您没有留下任何其他单词的变量,但俄语要搜索和识别,并且不要忘记将 ant 脚本添加到您的 build.gradle 中它在这里解释。

应该解决这些问题:

java.lang.RuntimeException: new_Decoder 返回 -1

java.lang.ClassNotFoundException: edu.cmu.pocketsphinx.SphinxBaseJNI

java.util.concurrent.ExecutionException: java.lang.RuntimeException: Decoder_setJsgfFile 返回-1

09-14 12:29:40.436 10908-10944/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“kws_search.c”,第 528 行:字典 09- 中缺少短语 'запуск' 中的单词 'запуск' 14 12:30:01.029 678-949/? E/RemoteViews: ANR 警告,RemoteViews 只能使用一次,否则可能会导致 Laucher、SystemUI 等主机出现 ANR。搜索键

09-14 12:06:09.113 2298-2339/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545276 行:声学模型中缺少电话“o1”;单词“ёлочкой”被忽略 09-14 12:06:09.113 2298-2339/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545277 行:电话“o1”在声学模型;单词“ёлочку”被忽略 09-14 12:06:09.113 2298-2339/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545278 行:电话“o1”在声学模型;单词 'ёлочной' 被忽略 09-14 12:06:09.113 2298-2339/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545279 行:电话 'o1' 在声学模型;单词 'ёлочный' 被忽略 09-14 12:06:09.113 2298-2339/edu.cmu.sphinx。pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545280 行:声学模型中缺少电话“o1”;单词 'ём' 被忽略 09-14 12:06:09.114 2298-2339/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545281 行:电话 'o1' 在声学模型;单词“ёмкий”被忽略 09-14 12:06:09.114 2298-2339/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545282 行:电话“o1”在声学模型;单词“ёмкими”被忽略 在声学模型中缺失;单词“ёмкий”被忽略 09-14 12:06:09.114 2298-2339/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545282 行:电话“o1”在声学模型;单词“ёмкими”被忽略 在声学模型中缺失;单词“ёмкий”被忽略 09-14 12:06:09.114 2298-2339/edu.cmu.sphinx.pocketsphinx E/cmusphinx:错误:“dict.c”,第 195 行:第 545282 行:电话“o1”在声学模型;单词“ёмкими”被忽略

于 2017-09-20T07:01:55.263 回答