相关疑难解决方法(0)

Java的虚拟机的Endianness

Java在其虚拟机中使用了什么字节顺序?我记得在哪里读取它取决于它运行的物理机器,然后我读到的其他地方,我相信它始终是大端.哪个是对的?

java virtual-machine endianness

30
推荐指数
2
解决办法
2万
查看次数

从语音识别意图中记录/保存音频

在提出这个问题之前,我检查了所有与此问题相关的stackoverflow其他线程没有任何成功,所以请不要回答其他线程的链接,:)

我想保存/记录谷歌识别服务用于语音操作的音频(使用RecognizerIntent或SpeechRecognizer).

我经历了很多想法:

  1. 来自RecognitionListener的onBufferReceived:我知道,这不起作用,只是测试它看看会发生什么,而onBufferReceived永远不会被调用(使用JB 4.3在galaxy nexus上测试)
  2. 使用媒体录像机:不工作.它突破了语音识别.麦克风只允许一个操作
  3. 试图找到识别服务在执行语音之前保存临时音频文件到文本api复制它的地方,但没有成功

我几乎绝望,但我只是注意到Google Keep应用程序正在做我需要做的事情!我使用logcat稍微调试了keep应用程序,app也调用了"RecognizerIntent.ACTION_RECOGNIZE_SPEECH"(就像我们开发人员一样)来触发语音到文本.但是,如何继续保存音频?它可以成为隐藏的api吗?是谷歌"作弊":)?

谢谢您的帮助

最好的祝福

android speech-recognition speech-to-text

24
推荐指数
2
解决办法
2万
查看次数

Java - 读取,操作和编写WAV文件

在Java程序中,什么是读取音频文件(最好的办法WAV文件)的数字阵列(float[],short[],...),并写出从数字数组的WAV文件?

java audio wav

20
推荐指数
6
解决办法
8万
查看次数

Android上的文字语音

我希望创建一个具有语音到文本的应用程序.

我使用RecognizerIntent了解这种能力:http://android-developers.blogspot.com/search/label/Speech%20Input

但是 - 我不希望弹出一个新的Intent,我想在我当前的应用程序中对某些点进行分析,我不希望它弹出一些声明它正在尝试录制你的声音.

有没有人知道如何最好地做到这一点.我或许正在考虑尝试Sphinx 4 - 但我不知道这是否可以在Android上运行 - 有没有人有任何建议或经验?!

我想知道我是否可以在这里更改代码,可能不会打扰显示UI或按钮,只是进行处理:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/的API /应用程序/ VoiceRecognition.html

干杯,

java android speech-recognition speech speech-to-text

11
推荐指数
2
解决办法
3万
查看次数

Google Keep如何在保存录音的同时进行语音识别?

Android的SpeechRecognizer显然不允许将您正在进行语音识别的输入记录到音频文件中.也就是说,要么使用MediaRecorder(或AudioRecord)录制语音,要么使用SpeechRecognizer进行语音识别,在这种情况下,音频不会记录到文件中(至少不能录制到一个文件); 但你不能同时做到这两件事.

多次询问如何在Android中同时录制音频和进行语音识别的问题,最流行的"解决方案"是录制一个flac文件并使用Google的非官方语音API,允许你发送一个flac通过POST请求提交文件并获取带有转录的json响应. http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/(过时的Android版) https://github.com/katchsvartanian/voiceRecognition/tree/master/VoiceRecognition http:// mikepultz.com/2013/07/google-speech-api-full-duplex-php-version/

这非常有效,但有一个巨大的限制,它不能用于超过大约10-15秒的文件(确切的限制不明确,可能取决于文件大小或可能的单词数量).这使它不适合我的需要.

此外,将音频文件切片为较小的文件不是一种可能的解决方案; 甚至忘记了在正确的位置(不是在一个单词的中间)正确分割文件的困难,对上述web服务api的许多连续请求将随机导致空响应(Google表示每次使用限制为50个请求那天,但像往常一样,他们没有透露明确限制请求突发的实际使用限制的细节.

因此,所有这些似乎表明,在将输入录制到Android中的音频文件的同时获取语音转录是不可能的.

但是,谷歌Keep Android应用就是这么做的.它允许你说话,将你所说的内容翻译成文本,并保存文本和录音(很不清楚它存储在哪里,但你可以重放它).它没有长度限制.

所以问题是:是否有人知道Google如何做到这一点?我会查看源代码,但它似乎不可用,是吗?

我在进行语音识别时嗅探了Google Keep发送和接收的数据包,它肯定不会使用上面提到的语音api.所有流量都是TLS,并且(从外部看)它看起来与使用SpeechRecognizer时非常相似.

那么也许存在将麦克风输入流"分割"(即复制或复用)到两个流中的方式,并将其中一个馈送到SpeechRecognizer,另一个馈送到MediaRecorder?

android speech-recognition google-api audio-recording

9
推荐指数
1
解决办法
3300
查看次数

语音录制时,语音识别无法正常工作

我正在开发一个功能,当按下按钮时,它将启动语音识别,同时记录用户说的内容.代码如下:

    button_start.setOnTouchListener( new View.OnTouchListener() 
    {
        @Override
        public boolean onTouch(View arg0, MotionEvent event) 
        {   
                if (pressed == false)
                {
                    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);        
                    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                    intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
                    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "zh-HK");
                    intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,1); 
                    sr.startListening(intent);
                    Log.i("111111","11111111");
                    pressed = true;
                }

                recordAudio();

            }

            if((event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL))
            {                   
                stopRecording();
            }
            return false;
        }
    });             
}

   public void recordAudio()
   {
      isRecording = true;   
      try 
      {
          mediaRecorder = new MediaRecorder();
          mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
          mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
          mediaRecorder.setOutputFile(audioFilePath);
          mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
          mediaRecorder.prepare();
      } 
      catch (Exception e) 
      {
          e.printStackTrace();
      }
      mediaRecorder.start();            
   }    

   public void stopRecording()
   {            
       if (isRecording) …
Run Code Online (Sandbox Code Playgroud)

android voice-recording voice-recognition mediarecorder

8
推荐指数
1
解决办法
1937
查看次数

How to use Androids' speech to text with audio sample file

I was able to run an example project which uses Android speech to text using this code:

   private void startVoiceRecognitionActivity()
    {
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo...");
        startActivityForResult(intent, REQUEST_CODE);
    }
Run Code Online (Sandbox Code Playgroud)

This works fine, but I was wondering, is it possible to use speech to text with an audio sample (byte array?) instead of recorded voice?

kind regards

audio android speech-to-text

7
推荐指数
1
解决办法
1万
查看次数

捕获发送到 Google 语音识别服务器的音频

认识到由谷歌服务器的演讲,我用SpeechRecognizer类与RecognitionListener组合中建议斯蒂芬回答这个问题。此外,我尝试使用 RecognitionListener 中的 onBufferReceived() 回调来捕获正在识别的音频信号,例如:

byte[] sig = new byte[500000] ;
int sigPos = 0 ;
...
public void onBufferReceived(byte[] buffer) {
  System.arraycopy(buffer, 0, sig, sigPos, buffer.length) ;
  sigPos += buffer.length ;
}
...
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,除非 SpeechRecognizer 无法连接到 Google 服务器、音频块未复制到上述sig数组中,并且会引发 HTTP 连接超时异常。SpeechRecognizer 最终连接到谷歌服务器,识别结果表明收到了完整的音频信号;只有sig数组缺少一些音频块。

有没有人遇到同样的问题?任何解决方案的提示?谢谢!

android speech-recognition voice-recognition

5
推荐指数
1
解决办法
5614
查看次数