android 谷歌识别SpeechRecognizer开始识别时会播放滴一声有没有办法让它不播滴一声
在Android的SpeechRecognizer类中,没有提供直接禁止播放“滴一声”的方法。这个声音是由操作系统控制的,无法通过SpeechRecognizer类的设置来更改。
然而,你可以通过一些变通的方式来实现类似的效果。一种方法是在开始识别之前将设备的音量设置为静音,然后在识别完成后将音量恢复到之前的状态。这样,虽然还是会有“滴一声”的音效,但是用户无法听到。
下面是一个示例代码,演示如何在开始识别之前将音量设置为静音,识别完成后恢复音量:
import android.content.Context;
import android.media.AudioManager;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
public class MySpeechRecognizer {
private Context context;
private SpeechRecognizer speechRecognizer;
private AudioManager audioManager;
private int originalVolume;
public MySpeechRecognizer(Context context) {
this.context = context;
speechRecognizer = SpeechRecognizer.createSpeechRecognizer(context);
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
}
public void startListening(RecognitionListener listener) {
// 将音量设置为静音
originalVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
// 开始识别
speechRecognizer.setRecognitionListener(listener);
speechRecognizer.startListening(RecognizerIntent.getVoiceDetailsIntent(context));
}
public void stopListening() {
// 停止识别
speechRecognizer.stopListening();
// 恢复音量
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, originalVolume, 0);
}
}
使用上述代码,你可以通过调用startListening方法来开始识别,并传入一个RecognitionListener来接收识别结果。识别完成后,调用stopListening方法来停止识别,并恢复音量。
请注意,这种方法只对SpeechRecognizer类的开始和停止识别时的声音有效,对于其他应用或系统级别的声音无法控制
原文地址: https://www.cveoy.top/t/topic/hMuq 著作权归作者所有。请勿转载和采集!