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:
- 在虚拟环境中安装:
pip install gTTS - 示例代码:
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
相关产品推荐
相关产品推荐

