【问题标题】:Pocketsphinx takes too much battery on androidPocketsphinx 在 android 上消耗太多电池
【发布时间】:2017-04-01 03:34:35
【问题描述】:

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

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

recognizer = defaultSetup()
        .setAcousticModel(new File(assetsDir, "en-us-ptm"))
        .setDictionary(new File(assetsDir, "cmudict-en-us.dict"))
        .setRawLogDir(assetsDir).setKeywordThreshold(1e-20f)
        .getRecognizer();
recognizer.addListener(this);

对于关键字:

// Create keyword-activation search.
recognizer.addKeyphraseSearch(KWS_SEARCH, "extreme");

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

// Create grammar-based searches.
File menuGrammar = new File(assetsDir, "menu.gram");
recognizer.addGrammarSearch(MENU_SEARCH, menuGrammar);
// Next search for digits
File digitsGrammar = new File(assetsDir, "digits.gram");
recognizer.addGrammarSearch(DIGITS_SEARCH, digitsGrammar);
// Create language model search.
File languageModel = new File(assetsDir, "weather.dmp");
recognizer.addNgramSearch(FORECAST_SEARCH, languageModel);

还有其他方法可以减少服务使用的电池吗?

【问题讨论】:

  • 我不认为连续收听一个关键字可以以任何方式对电池友好。还是仅当您的应用程序打开时?像 Alexa 这样的设备可能有一个硬件组件来处理这个问题,并让设备在几乎没有电池使用的情况下休眠。
  • 嗨,@Peterdk 我提供了一个选项,仅在屏幕打开时才开始收听(即使应用程序关闭,它也会从服务中收听启动指令)。这相对节省了更多的电池。好吧,谷歌的 VR 是活跃的,每次都在听命令。它不像 Pocketphinx 那样使用电池和资源。
  • 我假设只听谷歌关键字的代码是高度优化的。使用通用库可能会花费更多的处理时间。

标签: android speech-recognition cmusphinx pocketsphinx-android


【解决方案1】:

由于您使用的是麦克风,因此更改程序代码不会显着解决电池消耗问题。您可以想办法在某些不必要的时候停止使用麦克风进行识别。

【讨论】:

  • 嗨。嗯,这有帮助。我已经在我的应用程序中添加了一个选项,用于仅在屏幕打开时运行 pocketsphinx。尽管如此,它还是占用了太多的资源和电池。谷歌的热词识别服务几乎一直处于激活状态,对电池没有任何影响!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2017-11-23
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多