原文链接:http://www.juzicode.com/archives/4635

周末在楼下超市买菜的时候,结完账超市老板田大爷把桔子菌拉到一边神秘兮兮地说:听说你是写程序的?

桔子菌茫然地点点头:是的,写过一点的。

田大爷朝隔壁竞争对手望了望,压低声音跟桔子菌说:听到没,我也想搞一个那样的软件给我播报菜价,但是打听了下,100块只能用3个月。

桔子菌听着隔壁超市传来明显的”机器”腔调声,那是超市惯用的语言播报软件发出来的,只是不知道这种软件的使用还有这么个讲究。

田大爷继续说了:你是写程序的,能不能帮忙找一个这样的免费软件。电脑和音箱我这里已经有了,不用你操心。

哦,对了,这种软件的使用越简单越好。田大爷赶紧补充了一条需求。

看来在别人眼里程序猿的刻板印象还是相当刻骨铭心的,只要是和电脑相关的工作都是程序猿能干的,上次桔子菌确实也给田大爷修过电脑的,不过这次找软件好像和写代码有点接近些了。

桔子菌看了看超市里那个人工录音的大喇叭,还没有开口。

田大爷摆出很嫌弃的样子:这不好用啊,几十个菜价只要有一个发生了变化,又要把所有的菜价全部重新录一遍。田大爷是摇着头说完的。

看着田大爷殷切的眼神,桔子菌不忍心残忍拒绝,但是也不确定能不能找到这种软件,只是答应了田大爷试试看。

没想到平时桔子菌在田大爷这里做了这么多次甲方,今天田大爷成了桔子菌的“甲方”。

回到家桔子菌吃完午饭就来到了电脑前,开始给田大爷物色免费软件。

桔子菌首先搜到的是下面这种,在网页上写一段文字,对方把语音文件录好发回来,但是价格也不菲,而且和大爷说的需求也不符,菜价发生变化又得重新交钱,重新录制。

桔子菌又跑到软件分享网站上找到几个离线版的,表面说免费使用,实际上仍然是要收费的:

而且看着操作起来似乎也不简单:

田大爷的需求很明确:免费、简单、适应价格变化,可是桔子菌在网上找了个把小时愣是没有物色到符合需求的软件。就在将要放弃之际桔子菌心想既然找不到现成的,为何不自己做一个呢?

桔子菌快速做了评估,自己做的话其他都好说,难点是怎么将文字转换为语音这部分。我们知道Windows系统从XP开始就有“文字转语音TTS”的功能,到了win7和win10系统就演变成了“讲述人”:

Windows自带的这些功能,一般也会提供类似的编程接口。这个时候桔子菌首先想到的当然是怎么用Python做了,一种方式是写VBS脚本交给Python调用,另外还可以通过win32com模块加载文字转语音组件,后者更原汁原味,就选win32com了。

先写个简单的脚本测试下:

import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("桔子 3块钱一斤")

运行之后听了下,效果还可以,也是原汁原味的“机器”声音。

接下来就是怎么具体实现了,为了快速部署“上线”,桔子菌并不打算做复杂的操作界面,如果要修改价格、增加菜品,直接在excel里面修改。

但是想到要修改excel表格,桔子菌担心田大爷不会操作。问过田大爷后,来了个大反转,这次轮到桔子菌对田大爷有刻板印象了,他表示修改excel完全没有问题,啧啧啧。

有了前面的“顶层设计“,接下里就是实现”底层逻辑“了。用Tk做界面,一个开始按钮,一个停止按钮,加一个显示状态的文本框。因为要循环播报,不能在Tk的按钮事件里面加无限循环,所以需要开个线程。按钮只改变一个标志位即可,线程里面每次轮询这个标志位决定开始播报还是停止播报。价格手动在excel里修改,用Python的xlrd模块读出数据。最后就是用pyinstaller打包程序。

表格结构是这样的,三列,如果单位不填写默认解析为斤:

做出来的效果就是这样的:

最后当然就是部署“生产环境”了,程序发布给田大爷使用。

田大爷反馈这个软件用起来确实容易上手,现在终于可以和隔壁对手一起同台竞技飚菜价了。

哦,对了,田大爷表示下次有机还会再找桔子菌修电脑、找软件。

扩展内容:

  1. Python进阶教程m13–打包工具pyinstaller
  2. Python进阶教程m10–多线程
  3. Python进阶教程m8–图形界面–tkinter
  4. Python进阶教程m2d–xlrd读excel

桔子菌和楼下超市田大爷的角色互换经历–Python做的商品价格语音播报器相关推荐

  1. 【初学python】用python做一个简单的超市收银台付款系统

    price=float(input("请输入商品单价:")) if(price<0):print("输入不合法!") amount=int(input(& ...

  2. pytesseract提取识别图片中的文字

    目录 1.获取tesseract版本号 2.获取语言包列表 3.识别图片中的文字 4.获取图片中文字的详细信息 5.识别图片中的文字和位置 6.识别osd信息 7.识别并生成xml文件 避坑指南: p ...

  3. 有了这个方法群聊斗图你就不会输了(Python imageio制作gif动图)

    原文链接:http://www.juzicode.com/python-funny-imageio-make-gif 先说需要用到的3个模块,imageio用来读写图像文件.imageio-ffmpe ...

  4. 又发现一条喵星人将要统治地球的新线索(OpenCV猫脸检测)

    都说喵星人快要统治地球了,各种证据正在被发现-- OpenCV的开发人员似乎也发现了些什么,在其发布版本里悄悄留下了些线索: 在OpenCV-Python安装包目录的data文件夹下,有2个" ...

  5. OpenCV-Python教程:直方图及其绘制(calcHist)

    原文链接:http://www.juzicode.com/opencv-python-histogram-calchist-draw-hist 返回Opencv-Python教程 图像的直方图反映的是 ...

  6. 中秋节月饼不知道买哪种?Python爬取4000种月饼类别告诉你答案!

    前言 马上临近中秋了,月饼的销量持续增长,也推出了各个不同口味类别的月饼,价格差异也较大.我们究竟应该买哪种月饼呢?今天就一起用Python爬取某宝月饼信息,并对爬取的数据进行可视化分析,一起来看看哪 ...

  7. nopi 缩小字体填充_我在超市里改字体

    -今天,2020年第一天,送篇字体教程给大家,让大家在学习中拥抱这新的一年,嗯,我们就是这么贴心呢! 这次主题是<我在超市改字体>,前段时间,我带工作室小伙伴们去楼下超市拍了一些产品包装上 ...

  8. 对话王田苗:亚马逊谷歌入局 服务机器人何时爆发?

    ▼ 点击上方蓝字 关注网易智能 为你解读AI领域大公司大事件,新观点新应用 编者按:在近日于深圳举办的2018 CCF-GAIR 全球人工智能与机器人峰会上,北京航空航天大学机器人研究所名誉所长.IE ...

  9. 99岁田家炳博士辞世!捐助300多所学校…

    90余所大学, 160 余所中学, 40 余所小学, 10所专业学校及幼稚园 -- 都受过他的捐赠. 不是捐钱最多, 但是把自己总资产的 80% 都用于慈善事业的, 在中国只有一个人, 他就是田家炳. ...

最新文章

  1. .sh是什么语言_shell的重生历史:从sh到bash
  2. springboot配置spring.profiles.active多环境支持
  3. 《Sibelius 脚本程序设计》连载(十四) - 2.1 注释、语句、语句块
  4. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介
  5. java 当前类_Java获取当前类名的两种方法
  6. New to My Oracle Support?
  7. 下载android平台源码
  8. 数据结构上机实践第14周项目3 - 是否二叉排序树
  9. 2021文科跨考计算机经验贴(个人分享用,科目408)
  10. 基于赫优讯netX芯片PROFINET IO设备的开发
  11. 西门子S7系列PLC与触摸屏模拟仿真(无需实物)
  12. MetaLife与ESTV建立战略合作伙伴关系并任命其首席执行官Eric Yoon为顾问
  13. 64位计算机安装32位,告诉你64位电脑怎么装32位系统
  14. 视频后期剪辑,怎样在视频画面上添加滚动字幕
  15. 图的应用:骑士周游问题
  16. AC/DC电源模块输入电压范围
  17. 数字转换为中文大写(钱数)
  18. 2021-11-12号-java面试题-北京
  19. Ping计算机名和Ping网站域名都是由DNS解析吗?
  20. 电容笔做的比较好的品牌有哪些?便宜好用的电容笔推荐

热门文章

  1. AirServer2022苹果安卓手机屏幕如何投影到电脑上面
  2. 【C++面向对象程序设计——侯捷大师】心得摘要
  3. 感恩节和感恩节的由来!
  4. idea打开后不显示界面,win+D快捷键解决问题
  5. 如何在安卓上android studio上构建本地服务器
  6. 高德地图两个多边形区域检测重叠解决方案
  7. 罗永浩 AR 创业公司估值 10 亿;​苹果宣布加大 AppStore 广告推送量;​Node.js 19 发布|极客头条...
  8. Nvidia Xavier平台CAN收发控制器调试记录
  9. Linux系统调用详解(实现机制分析)--linux内核剖析(六)
  10. 全国计算机等级一级b真题,2011年3月全国计算机等级考试一级B真题及参考答案.doc...