当前位置: 首页 > 知识库问答 >
问题:

如何在Google Recognitor Intent(语音识别)Android中增加语音收听时间

全兴运
2023-03-14

我确实试过给下面这些额外的东西以毫秒为单位的时间

Recognizer Intent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS
Recognizer Intent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS
Recognizer Intent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS

但不影响语音收听时间!我现在得到的语音收听时间只有3秒!如何实现10秒的收听时间

共有1个答案

冀冯浩
2023-03-14

它似乎只适用于以下ICS:https://stackoverflow.com/a/17675098/9427932

但您可以通过创建自己的类来定制google语音,并继承SpeechRecognitor,我在Xamarin Android上编写了这些代码,因此它与Android非常相似:

public class CustomRecognizer : Java.Lang.Object, IRecognitionListener, TextToSpeech.IOnInitListener
{
private SpeechRecognizer _speech;
private Intent _speechIntent;


public string Words;


public CustomRecognizer(Context _context)
{
    this._context = _context;
    Words = "";
    _speech = SpeechRecognizer.CreateSpeechRecognizer(this._context);
    _speech.SetRecognitionListener(this);
    _speechIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
    _speechIntent.PutExtra(RecognizerIntent.ExtraLanguageModel, RecognizerIntent.LanguageModelFreeForm);
    _speechIntent.PutExtra(RecognizerIntent.ActionRecognizeSpeech, RecognizerIntent.ExtraPreferOffline);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1000); 
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 1500);
}

void startover()
{
    _speech.Destroy();
    _speech = SpeechRecognizer.CreateSpeechRecognizer(this._context);
    _speech.SetRecognitionListener(this);
    _speechIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 1500);
StartListening();
}
public void StartListening()
{
    _speech.StartListening(_speechIntent);
}

public void StopListening()
{
    _speech.StopListening();
}

public void OnBeginningOfSpeech()
{

}

public void OnBufferReceived(byte[] buffer)
{
}

public void OnEndOfSpeech()
{

}

public void OnError([GeneratedEnum] SpeechRecognizerError error)
{
    Words = error.ToString();
    startover();
}

public void OnEvent(int eventType, Bundle @params)
{
}

public void OnPartialResults(Bundle partialResults)
{
}

public void OnReadyForSpeech(Bundle @params)
{
}

public void OnResults(Bundle results)
{

    var matches = results.GetStringArrayList(SpeechRecognizer.ResultsRecognition);
    if (matches == null)
        Words = "Null";
    else
        if (matches.Count != 0)
        Words = matches[0];
    else
        Words = "";

    //do anything you want for the result
    }
    startover();
}

public void OnRmsChanged(float rmsdB)
{

}

public void OnInit([GeneratedEnum] OperationResult status)
{
    if (status == OperationResult.Error)
        txtspeech.SetLanguage(Java.Util.Locale.Default);
}}

您可以在结束后调用startover()立即开始录制,因此它看起来像一个“连续演讲”(在您的情况下为10秒)

 类似资料:
  • 我正在寻找一个Android语音识别库。我只需要它来理解“是/否”的答案(用不同的语言,如英语、德语、法语)。 有什么建议吗?

  • [可能重复]但我没有找到下面问题的答案。 在过去的两天里,我一直在做一些语音识别方面的研究,但我的问题没有得到答案: 是否可以将语音识别作为一项服务运行?我想实现这样的功能:虽然我的手机处于睡眠模式,但我需要拨打一个号码

  • 问题内容: 我正在研究语音识别,需要一些示例程序。 谁能指导我? 问题答案: 让我剪切粘贴一下,向您展示所需的代码。 编辑:您还可以从该项目下载一个方便的抽象类。 您将需要此意图(在您认为合适的情况下进行参数化): 然后,您需要将自己的意图发送到语音识别活动,例如, 然后,您需要让自己的活动处理语音结果:

  • 我想制作一个语音识别器应用程序来转录用户的语音。我不想在这样做的时候有任何对话,所以是不可能的。(我知道如果我使用这种方法,我可以获得音频) 我正在使用SpeechRecognitor,并调用startListening来收听用户的音频。我在onResults中得到了非常准确的结果。 现在,我还需要在我的设备SD卡中存储用户的音频。为此,我尝试了MediaRecorder和AudioRecord,

  • 我正在为嵌入式设备的语音相关语音识别解决方案寻找解决方案。我已经研究过Pocketsphinx,但由于我仍然不熟悉它,我想也许更有经验的人可能会知道。是否有可能使用Pocketsphinx来实现这样的语音识别。它应该记录音频,提取其特征,然后将其与所说的任何内容进行匹配,而不是使用声学和语言模型。是否有可能使用Pocketsphinx实现此流程?如果没有,有人能为这样的解决方案指出正确的方向吗?谢

  • 由于连接到不同的API,我目前正在开发一个工具,允许我阅读所有的通知。 它工作得很好,但现在我想用一些声音命令来做一些动作。 就像当软件说“一封来自Bob的邮件”时,我想说“阅读”或“存档”。 我的软件是通过一个节点服务器运行的,目前我没有任何浏览器实现,但它可以是一个计划。 在NodeJS中,启用语音到文本的最佳方式是什么? 我在它上面看到了很多线程,但主要是使用浏览器,如果可能的话,我希望在一