问题标签 [pocketsphinx-android]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
557 浏览

xamarin - xamarin 绑定“Jsgf”未实现接口成员“IIterable.Iterator()

我正在尝试通过此链接实现新版本的 PocketSphinx 我创建了一个新的绑定项目并且有编译错误。

错误 CS0738 'Jsgf' 没有实现接口成员 'IIterable.Iterator()'。'Jsgf.Iterator()' 无法实现 'IIterable.Iterator()',因为它没有匹配的返回类型 'IIterator'。PocketSphinxDroid \PocketSphinxDroid\obj\Debug\generated\src\Edu.Cmu.Pocketsphinx.Jsgf.cs 9 活动

我尝试添加到 metatdata.xml 文件

或者

但仍然得到错误

0 投票
1 回答
867 浏览

android - pocketsphinx 中的未知 CMN 类型“批次”

我已阅读 cmusphinx 教程并成功运行了 pocketsphinx android 演示。
现在我想修改演示并添加对意大利语的支持。
在意大利模型下载页面(这里)我可以看到两个文件:

  1. cmusphinx-it-5.2.tar.gz:它包含模型参数;
  2. it.tar.gz:它包含字典。

我复制了字典/src/main/assets/sync并创建了一个包含voxforge_it_sphinx.cd_cont_2000/src/main/assets/sync/it-ptm内容的新文件夹来设置模型。然后我通过添加这样的意大利资源列表来修改文件:assets.lst

最后我修改了这样的代码:

项目构建成功,但资产同步后应用程序崩溃。这里记录的错误:

I/cmusphinx:INFO:pocketsphinx.c(145):从 /storage/emulated/0/Android/data/edu.cmu.sphinx.pocketsphinx/files/sync/it-ptm/feat.params 解析模型特定的特征参数
E/cmusphinx:致命:“cmn.c”,第 126 行:未知 CMN 类型“批次”

有人可以告诉我有什么问题吗?谢谢

0 投票
1 回答
1566 浏览

android - 如何设置阈值以从 pocketsphinx-android 的列表中发现关键字?

我希望我的 Android 应用程序能够进行连续的关键字发现。我正在修改 pocketsphinx android 演示来测试我是如何做到的。我将这个列表写在一个名为 en-keywords.txt 的文件中,从cmudict-en-us.dict 中挑选单词:

在 setupRecognizer 方法中,我删除了每个搜索并仅将这个关键字搜索添加到识别器中:

最后我像这样修改了onPartialResult:

因此,每次找到具有非空假设的部分结果时,都会调用 onResult 并重新开始搜索。

我在运行的应用程序中看到的不是我所期望的:

  1. 如果我说的内容与我正在寻找的内容非常不同,那么 onPartialResult 每次说话时都有一个不为零的假设;
  2. 如果我在PartialResult 上说“嘿”,hypotesis 通常由多个单词组成;最坏的情况我说“嘿”并且方法理解“关于能量血液的彩虹”
  3. 然后调用 onResult 方法,但它打印的 Toast 文本与 onPartialResult 找到的最后一个文本不同;就像它是以一些不平凡的顺序完成的字符串的连接。

我尝试使用不同的关键字阈值,但我没有找到自己的方式......可能我错过了一些基本概念或一些配置参数......有人可以帮助我吗?

0 投票
1 回答
121 浏览

android - 找到多个匹配项时无法迭代 SegmentList

我正在修改pocketsphinx android 演示以测试基于关键字列表和相对阈值的连续关键字发现。

当我的 edu.cmu.pocketsphinx.RecognitionListener 实现的 onResult 方法被调用时,这个字符串 hypothesis.getHypstr()将包含可能匹配的列表。

我在这里读到,要获得每场比赛及其权重,可以这样做:

但是,我运行的代码永远不会迭代段,例如 SegmentList 是否为空而hypothesis.getHypstr()显示多个匹配项。

为了重现这种情况,我使用了这个阈值非常低的关键字列表,以便轻松找到更多匹配项:

我的onPartialResult方法是什么都不做,而:

例如,如果我说“energies”,那么hypothesis.getHypstr()="blood about energies blood" 但没有对 SegmentList 进行迭代:我可以通过在 onResult 方法的开头放置一个断点来查看它。

有什么建议吗?

谢谢

0 投票
0 回答
644 浏览

android - Android PocketSphinx:如何重置 Hypstr()?

我希望我的设备持续收听关键字。为此,我正在使用 PocketSphinx。我在 github 上找到了一个演示项目,它使 PocketSphinx 可以使用 Service 持续监听。

这是github项目的链接

它第一次工作正常,但在那个假设之后。Hypstr() 一次又一次地返回相同的字符串。

我想清除 hypotheses.Hypstr() 中的字符串,以使这个应用程序对我正常工作。

这是我的服务类:

}

和 Logcat 启动服务后,以防万一有人需要:

Speechrecognitionservice V/ViewRootImpl: 调整 android.view.ViewRootImpl@3b6eb36: frame=[222,1596][857,1728] contentInsets=[0,0][0,0] visibleInsets=[0,0][0,0] reportDraw=true 02-17 14:27:52.937 10121-10135/com.hrupin.speechrecognitionservice I/libGameXtend: LUCID_1 (1487321872937) GameXtend 当前在手动模式下运行 02-17 14:27:52.937 10121-10135/com.hrup .speechrecognitionservice I/libGameXtend: LUCID_1 (1487321872937) GameXtend 当前在 no_save 保存电源状态下运行。02-17 14:27:52.937 10121-10135/com.hrupin.speechrecognitionservice I/libGameXtend: LUCID_1 (1487321872937) com.hrupin.speechrecognitionservice 当前与 GameXtend 一起运行,PS 参数 = 1。不支持 ICE。PS参数来源为PowerXtend配置02-17 14:27:52.937 10121-10135/com.hrupin。

注意:我想重置hypothesis.getHypstr() 字符串,这样我的程序下次可以正常工作。

我认为这足以解释,但如果我遗漏了什么,请在评论中告诉我。

谢谢你。

0 投票
0 回答
255 浏览

visual-studio - 我可以为 Xamarin.Android 项目使用哪种连续语音识别服务?

我正在寻找一种可以连续录制语音大约 10 分钟(没有任何中断)的服务。该服务应该能够检测到一些关键字(主要是数字)。

我目前正在使用 Android.Speech.SpeechRecognizer。它运作良好,但记录只能持续大约 10 秒。我试图设置一些“ExtraSpeechInput”参数如下但没有成功:

似乎我不是唯一一个对此有问题的人。所以我尝试制作一个 CMU PocketSphinx 包装器。尽管如此,我最终还是遇到了错误......

有人知道我可以使用哪种服务吗?

0 投票
1 回答
342 浏览

android - 演示项目中switchSearch()方法、KWS_SEARCH属性、startListening()方法参数是什么意思?

所有问题都与 android for pocketsphinx 的演示项目有关,在 CMUSphinx 的官方网站上给出。

我不明白该方法的switchSearch()真正作用。方法是使用KWS_SEARCH="wakeup"属性,这个属性有什么用?它不出现在语法文件 (.gram) 中。这个属性的目的是什么?该方法比较searchNamewith KWS_SEARCH,我不知道为什么。KWS_SEARCH它还作为参数传递给startListening()识别器对象上的方法。为什么?

我不明白如何使用 10000 毫秒的超时来改善结果。

这是switchSearch()方法:

0 投票
1 回答
194 浏览

android - Pocketsphinx 在 android 上消耗太多电池

我正在使用 pocketsphinx 在服务中连续发现关键字。问题是,它会占用大量电池,使该应用程序对普通用户完全无法使用。

好吧,原始代码在 B4A 中,但它看起来是这样的:

对于关键字:

我什至排除了以下内容以减少 CPU 消耗。毕竟,我的主要目标只是找出关键字。

是否有任何其他方式可以使服务使用更少的电池?

0 投票
0 回答
801 浏览

android - pocketSphinx-android 用于 STT(语音转文本)而不是搜索关键字?

我正在尝试使用 pocketSphinx-Android 演示构建语音到文本应用程序。但演示中的代码是用于搜索特定单词,如数字、电话等。

我不是在寻找像 NGRAM_SEARCH 这样的关键字的搜索。只有一个关键字,我需要应用程序来听用户说什么并将其直接转换为文本。在CMUSphinx PocketSphinx - 识别所有(或大量)单词中,它使用关键字以外的另一个单词来激活接收输入来自用户。我需要一个简单的 STT 引擎,只需一个关键字即可激活,就像 google assistant 一样。提前致谢 :)

0 投票
0 回答
311 浏览

android - 即使没有说出来,Android 上的 PocketSphinx 也能识别单词

我正在为 android-23 使用 PocketSphinx。我想为我的一个应用程序编写一个离线助手。我已成功使用识别器.addKeyphraseSearch 来初始化助手。例如。在这种情况下,我说“你好”来初始化它。

这是我的全部代码

当我打招呼时,它会通过 tts 回复“是的先生”来正确响应。但在那之后它应该切换菜单并等待进一步的命令。在这种情况下,有两个。

但问题是它在切换菜单后不等待我的命令。

有时吐司会弹出“关于”或有时会出现“提前”,即使我不说它们。在那之后,该应用程序严重冻结,除了关闭它,我别无选择。

if 也尝试过除了 switch 和 case 之外的 if else 语句。但他们似乎没有多大帮助。我也尝试在 onResult 而不是 onPartialResult 中使用上述代码,但这也无济于事。

使用 sphinx 工具,我创建了自己的字典和语法文件。这是本例的语法文件内容。

我哪里错了?请帮我。