乐于分享
好东西不私藏

自学编程第50课:打包语音AI助手成exe——发给朋友直接用

自学编程第50课:打包语音AI助手成exe——发给朋友直接用

49课做完后,Tyree的语音助手已经能正常工作了。他问:“第40课我们学过打包,那这个语音助手也能打包成exe发给朋友吗?”

我说:“可以,但语音助手比游戏多了一些特殊的地方:麦克风权限、语音引擎、API Key。打包时如果不注意这些,发给朋友也是打不开的。”

Tyree:“那你告诉我这些坑在哪,我去填。”

今天课程只补语音助手打包时需要注意的事项,基础打包方法第40课已经学过,如果忘记了可以返回去复习下哦!

01. 打包前的准备工作

在命令行中执行打包命令之前,必须先进入你的代码文件所在的目录。否则`pyinstaller` 找不到 `voice_assistant.py`

操作步骤:

1. 打开命令行(cmd 或 PowerShell)。

2. 切换目录

输入  cd F:\编程每一课\49课  回车

 F:\编程每一课\49替换成你实际的代码存放路径。

3. 确认文件存在:

输入dir回车

在文件列表中能看到`voice_assistant.py`,说明位置正确。

如果你的文件在桌面:

cd C:\Users\Administrator\Desktop

如果文件在盘:

E:

cd E:\my_project

 `cd` 表示“切换目录”,后面跟文件夹路径。如果路径中包含空格,需要用引号括起来(如 `cd "F:\编程每一课\49"`)。

图上这个的.py文件是存在F 盘,ai  文件夹里。

02. 复习第40课学过的打包命令

40课我们学过 `pyinstaller` 的基本用法。快速复习一下核心命令:

pyinstaller --onefile voice_assistant.py

如果程序有资源文件(如图片、`.env`),需要用 `--add-data`

这些在第40课已经详细讲过,就不再重复了。

03. 语音助手打包的三个“坑”

我们打包时,需要注意有几个坑

1:麦克风权限

打包后的exe 第一次运行时,Windows 会弹出“是否允许此应用访问麦克风”的提示。如果用户点了“否”,语音识别就无法工作。

解决方法:在代码中添加提示,让用户知道需要允许麦克风权限。

在程序开头添加

print("首次运行请允许麦克风权限,否则语音识别无法工作")

2`pyttsx3` 的 COM 依赖

如果程序中使用了`pyttsx3` 做语音朗读,打包时需要包含 SAPI5 相关的 COM 组件。

解决方法:在打包命令中添加隐藏导入:

如果不需要语音朗读功能,可以直接注释掉`pyttsx3` 相关代码(如第49课下集所述),这样打包更干净。

3API Key(环境变量)

如果使用`.env` 文件存储 API Key,打包时需要把 `.env` 文件包含进去。

解决方法:使用`--add-data` 把 `.env` 添加进去:

并且代码中要使用`resource_path()` 函数加载 `.env` 文件(该函数已在第40课中介绍过)。

04. 推荐的打包命令(针对第49课语音助手)

下面这个是针对第49课语音助手的代码的打包命令

如果不需要语音朗读,可以去掉`--hidden-import=win32com.client`

下面看看打包后的成果展示

上面图显示是打包后生成的文件存在dist 文件夹里,双击运后的界面,看下图示,是我随意输入了一些问题的回答互动!

05. 发给朋友前,先自己测试一遍

打包后,建议按以下步骤测试:

1. 把 `dist/voice_assistant.exe` 复制到一个新文件夹。

2. 确认 `.env` 文件也在同一个文件夹(因为 `--add-data` 会把 `.env` 放到 exe 同级目录,而不是打包进 exe 内部)。

3. 双击运行,测试所有功能是否正常。

4. 如果报错,在命令行中运行 exe 查看错误信息。

06. 本课总结

麦克风权限首次运行允许权限

`pyttsx3` 依赖添加

`--hidden-import=win32com.client` 

`.env` 文件 `--add-data` 添加

语音朗读如果不需要,可以注释掉降低打包复杂度

07. 课后小挑战

想挑战的朋友可以做做下面几个挑战,可以增加熟练程度

挑战1:完整打包语音助手

将第49课的语音助手(含语音识别 + AI问答 语音朗读)完整打包成一个 exe

挑战2:对比有无语音朗读的体积差异

分别打包“含语音朗读”和“不含语音朗读”两个版本,对比文件大小差异。

好了,下一节课我们将学习

爬虫入门——获取网页数据,用`requests` 和 `BeautifulSoup` 从网页抓取数据。

————热门推荐————

自学编程第40课:打包游戏成exe文件——发给朋友

自学编程第46课:Python写段代码让麦克风实时语音识别

少儿自学编程第45课:——从音频文件识别语音

自学编程第36课:太空避障——完整游戏设计与难度平衡

自学编程第7课:turtle画图入门(画正方形五角形三角形)

自学编程第6课:列表+循环+判断(做一个学生成绩分析器)

自学编程第3课:变量与数学计算(做一个年龄计算器)

自学编程第一步:安装Python和Thonny(零基础图文教程)

(本系列教程每天更新,欢迎关注收藏)

图‖文 宝月小鹿 转载须标明出处