Flutter:如何关闭/修改Google语音转文字的初始提示音
修改Flutter SpeechToText.listen()的Google语音转文字初始提示音
目前speech_to_text插件本身没有直接提供修改Google语音转文字初始提示音的API——这个提示音是Google语音识别服务在系统层面播放的,不过可以通过以下几种方式实现需求:
Android端自定义处理
- 在Android项目的
res/raw目录下添加自定义提示音频文件(如custom_start_sound.mp3)。 - 找到
speech_to_text插件对应的Android原生代码(通常是SpeechToTextPlugin.java),定位触发语音识别的逻辑。 - 调用Google语音识别服务前,用Android的
MediaPlayer播放自定义音频,同时禁用系统默认提示音。 - 核心代码示例:
// 播放自定义提示音 MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.custom_start_sound); mediaPlayer.start(); mediaPlayer.setOnCompletionListener(MediaPlayer::release); // 启动语音识别时禁用系统提示音 Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_SOUND_EFFECTS_ENABLED, false);
- 在Android项目的
iOS端自定义处理
- 将自定义提示音频文件添加到iOS项目资源中。
- 修改
speech_to_text插件的iOS原生代码,在启动语音识别前播放自定义音频,并关闭系统默认提示音。 - 核心代码示例:
// 播放自定义提示音 if let soundURL = Bundle.main.url(forResource: "custom_start_sound", withExtension: "mp3") { var soundID: SystemSoundID = 0 AudioServicesCreateSystemSoundID(soundURL as CFURL, &soundID) AudioServicesPlaySystemSound(soundID) } // 禁用系统提示音,需在启动识别会话时配置对应参数
跨平台通用替代方案
若不想修改插件原生代码,可在调用SpeechToText.listen()的同时,用Flutter的audioplayers插件先播放自定义提示音,再通过MethodChannel调用原生代码关闭系统默认提示音。
注意:修改插件原生代码后,需将插件作为本地依赖引入项目,避免pub远程依赖的更新覆盖修改。
内容的提问来源于stack exchange,提问作者Aman Programmer
相关产品推荐
相关产品推荐

