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

Python调用os.system执行say命令报错sh:1:say:not found的问题

问题根源

say是macOS专属的文本转语音命令,Pop!_OS属于Linux发行版,系统默认没有这个命令,所以不管是在PyCharm虚拟环境还是直接在bash中运行,都会提示“say: not found”。

解决办法

你可以用Linux原生的文本转语音工具替代,以下是几种可行方案:

方案1:用espeak(轻量,大概率已预装)

  • 先检查是否安装:在bash中执行espeak --version,未安装的话运行以下命令:
    sudo apt update && sudo apt install espeak
    
  • 替换代码中的命令:把os.system(f"say {text}")改成
    os.system(f"espeak '{text}'")
    

方案2:用festival(功能更丰富的语音合成系统)

  • 安装命令:
    sudo apt update && sudo apt install festival festvox-kallpc16k
    
  • 代码替换:
    os.system(f"festival --tts <<< '{text}'")
    

补充:用Python库实现(更优雅,不依赖系统命令)

既然你已经配置了Python虚拟环境,推荐用专门的文本转语音库,比如gTTS:

  1. 在虚拟环境中安装:
    pip install gTTS
    
  2. 示例代码:
    from gtts import gTTS
    import os
    
    text = "需要转换的文本内容"
    tts = gTTS(text=text, lang='zh-cn') # 支持多语言,比如'en'对应英文
    tts.save("output.mp3")
    os.system("mpv output.mp3") # 若没有mpv,可执行sudo apt install mpv安装,或替换成其他播放器命令
    

内容的提问来源于stack exchange,提问作者Amogh SH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:34:54