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

Flutter TTS无声音求助:调用speak方法无音频输出

FlutterTts调用无声音的排查与解决方法

以下是针对FlutterTts点击按钮无声音输出的排查步骤和修复建议:

  • 检查权限配置
    Android端确保AndroidManifest.xml中添加必要权限:

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    

    iOS端在Info.plist中添加语音相关权限描述:

    <key>NSSpeechRecognitionUsageDescription</key>
    <string>需要使用语音合成功能</string>
    
  • 添加状态监听定位问题
    给FlutterTts实例添加回调监听,明确是初始化、播放还是其他环节出错:

    final FlutterTts tts = FlutterTts();
    
    @override
    void initState() {
      super.initState();
      tts.setStartHandler(() => print("TTS开始播放"));
      tts.setErrorHandler((errorMsg) => print("TTS错误: $errorMsg"));
      tts.setCompletionHandler(() => print("TTS播放完成"));
    }
    
  • 验证设备语言支持
    先确认设备支持目标语言,避免因语言不兼容导致无声音:

    Future<void> checkSupportedLanguages() async {
      List<dynamic> languages = await tts.getLanguages();
      print("设备支持的TTS语言: $languages");
    }
    

    如果"en-US"不在列表中,替换为设备支持的语言代码(如"en-GB")。

  • 检查音频状态与输入文本

    • 确认设备媒体音量未静音、音量值不为0;模拟器需开启音频输出功能
    • 打印待播放文本,确保words.english!不是空字符串:
      onPressed: () {
        print("待播放文本: ${words.english!}");
        _speak(words.english!);
      },
      
  • 捕获异步调用异常
    给_speak方法添加异常捕获,排查调用过程中的错误:

    Future _speak(String text) async {
      try {
        await tts.setLanguage("en-US");
        await tts.setPitch(1);
        await tts.setSpeechRate(0.8);
        await tts.speak(text);
      } catch (e) {
        print("TTS调用异常: $e");
      }
    }
    

内容的提问来源于stack exchange,提问作者onur.dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:40:35