看起来谷歌已经从Google即时版为第三方应用程序提供了离线语音识别功能.它被名为Utter的应用程序使用.
有没有人看过如何使用这个离线语音rec进行简单的语音命令的任何实现?您是否只使用常规的SpeechRecognizer API并自动运行?
android speech-recognition offline speech-to-text google-now
我正在尝试创建一个在Android 4.2中运行连续语音识别的服务.使用此链接的答案(Android 4.1和4.2上的Android语音识别作为服务),我创建了一个从Activity运行的服务.我的问题是我在访问mTarget.mAudioManager或mTarget.mSpeechRecognizerIntent在handleMessage方法中获得null异常.目标(以及从中创建的mTarget对象)不是null,而是其中的所有对象.
我在这做错了什么?
相关活动代码(从activity调用的静态方法,activityContext是调用此方法的活动):
public static void init(Context context)
{
voiceCommandService = new VoiceCommandService();
activityContext = context;
}
public static void startContinuousListening()
{
Intent service = new Intent(activityContext, VoiceCommandService.class);
activityContext.startService(service);
Message msg = new Message();
msg.what = VoiceCommandService.MSG_RECOGNIZER_START_LISTENING;
try
{
voiceCommandService.mServerMessenger.send(msg);
}
catch (RemoteException e)
{
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
服务代码:
public class VoiceCommandService extends Service
{
protected AudioManager mAudioManager;
protected SpeechRecognizer mSpeechRecognizer;
protected Intent mSpeechRecognizerIntent;
protected final Messenger mServerMessenger = new …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我使用 MediaRecorder 在 m4a(AAC 编码)中录制音频。我所有的录音都被缩短了(大约半秒)。就我的申请而言,拥有整个文件很重要。这是一个错误还是我遗漏了什么?
记录代码:
//set up recorder
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioChannels(1);
recorder.setAudioSamplingRate(16000);
recorder.setOutputFile(fileName);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//begin recording
recorder.prepare();
recorder.start();
Run Code Online (Sandbox Code Playgroud)
停止记录代码:
//stop recording
recorder.stop();
recorder.release();
recorder = null;
Run Code Online (Sandbox Code Playgroud)