因工作需要,做了一个QQ机器人语音播报程序。主要思路 是通过 酷Q 获取QQ消息取出有效信息。

根据信息在百度AI上合成语音,然后本地播放。

在播放语音的时候用了好几个模块  pygame 、pymedia  、系统os 等,试听效果都不怎么理想,最后发现MP3play 蛮好(开始用的python2.7)

  移植到新环境的时候mp3play 报错了。无法播放,根据提示查看源码,修改了两处地方,可正常运行。

  mp3play 根目录下  有两个文件  __init__.py 和 windows.py  根目录可以通过 pip install  mp3play  查看(没安装的会安装,安装了会显示安装路径)

  修改windows.py 两处代码

class _mci:
def __init__(self):
self.w32mci = windll.winmm.mciSendStringA
self.w32mcierror = windll.winmm.mciGetErrorStringA def send(self, command):
buffer = c_buffer(255)
command=command.encode(encoding="utf-8") #添加的将str 转bytes errorcode = self.w32mci(command, buffer, 254, 0) # 默认的str(command) 不要str
if errorcode: return errorcode, self.get_error(errorcode)
else:
return errorcode, buffer.value def get_error(self, error):
error = int(error)
buffer = c_buffer(255)
self.w32mcierror(error, buffer, 254)
return buffer.value def directsend(self, txt):
(err, buf) = self.send(txt)
if err != 0:
print ('Error %s for "%s": %s' % (str(err), txt, buf)) # print 添加一个()
return (err, buf)

改了两处测试可以使用。然后看了下MP3play  发现他主要是调用了系统 windll.winmm.mciSendStringA  函数

 from ctypes import windll, c_buffer

核心调用 windll.winmm.mciSendStringA(b"play aa.mp3", 0, 0, 0)

最新文章

  1. react+redux教程(五)异步、单一state树结构、componentWillReceiveProps
  2. IOS开发基础知识--碎片21
  3. ECSHOP Inject PHPCode Into \library\myship.php Via \admin\template.php && \includes\cls_template.php Vul Tag_PHP_Code Execute Getshell
  4. 【OpenStack】OpenStack系列4之Glance详解
  5. 各种数据库连接代码(java)
  6. leetcode 153. Find Minimum in Rotated Sorted Array --------- java
  7. 试验Windows Embedded Standard 7 Service Pack 1 Evaluation Edition
  8. power desinger 学习笔记三<批量执行sql语句>
  9. PHPCMS v9修改栏目或者单页没有权限
  10. HTML 页面载入 Flash 插件的几种方法
  11. 阿里云手动安装特定版本的nginx
  12. Redis的集群配置
  13. easyUI行删除
  14. 顺序表的原理与python中的list类型
  15. LeetCode(76): 最小覆盖子串
  16. CSS3实战开发: 折角效果实战开发
  17. mfc CAnimateCtrl
  18. CUPS/Printer sharing
  19. 阿里技术嘉年华-aDev内容感悟
  20. 1、JDK自带注解

热门文章

  1. U盘便携式hexo&博客搭建&极速纯净低bug主题推荐&部署到coding&SEO优化搜索
  2. Scrapy框架的下载与安装
  3. Linux OOM-killer(内存不足时kill高内存进程的策略)
  4. Maven工程读取properties文件过程
  5. React Hooks 你不来了解下?
  6. SqlServer 2014还原数据库时提示:无法在已有的""上还原文件,请重新发出RESTORE语句,用WITH REPLACE来覆盖原先存在的文件
  7. Hibernate 框架简单解说
  8. 从零开始入门 K8s| 详解 Pod 及容器设计模式
  9. ACM卡常数(各种玄学优化)
  10. Java连载32-对象、类及其关系与定义