You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:flutter_tts在iOS端无声音问题求助

解决iOS端flutter_tts无声音输出问题

针对你遇到的iOS端无声音但Android正常的情况,可按以下步骤排查修复:

1. 调整iOS音频类别

你当前设置的playAndRecord类别需要麦克风权限,更适配录音+播放场景,纯文字转语音播放应改用playback类别:

tts.setIosAudioCategory(
  IosTextToSpeechAudioCategory.playback, // 替换原playAndRecord
  [
    IosTextToSpeechAudioCategoryOptions.allowAirPlay,
    IosTextToSpeechAudioCategoryOptions.duckOthers,
    IosTextToSpeechAudioCategoryOptions.allowBluetooth,
    IosTextToSpeechAudioCategoryOptions.allowBluetoothA2DP,
    IosTextToSpeechAudioCategoryOptions.mixWithOthers,
    IosTextToSpeechAudioCategoryOptions.defaultToSpeaker
  ],
  IosTextToSpeechAudioMode.defaultMode // 改用默认模式
);

2. 确保初始化异步操作完成

当前setLanguage、setSpeechRate等方法未加await,可能导致初始化未完成就触发播放,修改为:

static Future<void> initTTS() async {
  await tts.setSharedInstance(true);
  await tts.setIosAudioCategory(
    // 上面修改后的类别配置
  );
  await tts.setLanguage('en-US');
  await tts.setSpeechRate(0.40);
  await tts.setPitch(1.0);
  await tts.setVolume(1.0); // 显式设置音量,避免默认静音
}

3. 检查Info.plist权限(若保留playAndRecord类别)

如果确实需要playAndRecord,必须在Info.plist中添加麦克风权限描述,否则iOS会静默限制功能:

<key>NSMicrophoneUsageDescription</key>
<string>需要麦克风权限用于语音功能</string>

4. 确认播放前已完成初始化

调用speak方法前,务必确保initTTS已执行完毕,例如:

// 在页面初始化或需要播放的地方
await TextToSpeech.initTTS();
await TextToSpeech.tts.speak("Hello World");

5. 测试设备音频状态

  • 检查iOS设备是否处于静音模式(侧边开关),flutter_tts默认遵守系统静音设置,若需忽略静音可调整音频选项
  • 测试耳机/扬声器切换,确认音频输出路径正常

内容的提问来源于stack exchange,提问作者Ebuzer SARIYERLİOĞLU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:50:03