我可以在桌面应用程序中使用谷歌语音识别API [英] can i use google speech recognition api in my desktop application

查看:245
本文介绍了我可以在桌面应用程序中使用谷歌语音识别API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道我是否可以使用谷歌的语音识别api作为我的桌面应用程序。我已经看到一些例子,我必须将语音转换为文件并发送到网址。但这将是一项繁琐的任务,因为在我的应用程序中,用户必须不断提交他的声音。那么有没有其他替代方法使用谷歌语音API。我最不感兴趣的是使用狮身人面像,因为它的准确性非常低,我不知道如何在字典中添加新单词而不将其添加到字典中它不会识别新单词。任何帮助将不胜感激。

I want to know whether i can use speech recognition api of google for my desktop application. I have seen some example in which i have to convert the speech to a file and send to a url. But it will be little cumbersome task because in my application the user have to continuously submit his voice. So is there any other alternative to use google speech api. I am least interested to go with sphinx because its accuracy is very less and i dont know how to add new words in the dictionary and without adding it to dictionary it wont recognize new words. Any help would be appreciated.

推荐答案

你指的是环境监听吗?我实际上正在使用Google语音识别API处理一些语音活动检测算法。虽然我还没有完成算法,但我添加了一个音量和频率计算器,这样当你不说话时你就不必向Google发送请求。这是源代码的链接。

Are you referring to ambient listening? I am actually working on some Voice Activity Detection algorithm with the Google Speech Recognition API. Although I haven't finished the algorithm yet, I've added a volume and frequency calculator so that you don't have to send requests to Google when the person is not talking. Here is the link to the source code.

https://github.com/The-Shadow/java-speech-api

(这不是我使用的,但它是你也可以添加频率阈值保持和东西。我把这些代码放在一起所以不能保证它会工作看看API的示例分支。)

(This isn't what I use, but it's simplistic. You can also add frequency threshold holds and stuff. I threw this code together so no guarantee it will work look at the example branch of the API.)

//package recognitionprocess;
//import org.jaudiotagger.audio.*;


import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;

import javax.sound.sampled.AudioFileFormat;

import com.darkprograms.speech.recognizer.GoogleResponse;
import com.darkprograms.speech.recognizer.Recognizer;

public class RecognitionMain {

    public static void main(String[] args)  {
        try{
        ambientListening();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

    private static void ambientListening() throws Exception{

        String filename = "tarunaudio.wav";//Your Desired FileName
        MicrophoneAnalyzer mic = new MicrophoneAnalyzer(AudioFileFormat.Type.WAVE);
       mic.open();
        mic.captureAudioToFile(filename);
        final int THRESHOLD = 10;//YOUR THRESHOLD VALUE.
        int ambientVolume = mic.getAudioVolume();//
        int speakingVolume = -2;
        boolean speaking = false;
            for(int i = 0; i<1||speaking; i++){
                int volume = mic.getAudioVolume();
                System.out.println(volume);
                if(volume>ambientVolume+THRESHOLD){
                    speakingVolume = volume;
                    speaking = true;
                    Thread.sleep(1000);
                    System.out.println("SPEAKING");
                }
                if(speaking && volume+THRESHOLD<speakingVolume){
                     break;
                }
                Thread.sleep(200);//Your refreshRate
            }
              mic.close();
            //You can also measure the volume across the entire file if you want
            //to be resource intensive.
            if(!speaking){
                 ambientListening();
            }
        Recognizer rec = new Recognizer(Recognizer.Languages.ENGLISH_US);
        GoogleResponse out = rec.getRecognizedDataForWave(filename);
        System.out.println(out.getResponse());
        ambientListening();
    }
}

这篇关于我可以在桌面应用程序中使用谷歌语音识别API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆