2019-12-20 22:53:43 [显示全部楼层]
4135浏览
查看: 4135|回复: 3

[高级教程] 掌控板【TTS模块实现离线真人语音合成】,教程

[复制链接]
视频演示


接线图
掌控板【TTS模块实现离线真人语音合成】,教程图1

掌控板【TTS模块实现离线真人语音合成】,教程图2

所需设备:

掌控板+掌控宝一块

TTS语音合成模块一块(自己去找,30多块钱)




连接方式:

TTS语音模块接5V/GND,RX/TX接掌控宝上任意P引脚




合成方式:

通过串口UART直接写出任意文本即可语音合成(mPython软件添加下扩展就有)

实现代码只有2行,非常的方便

from mpython import *

uart1 = UART(1, baudrate=9600, tx=Pin.P13, rx=Pin.P14)

uart1.write('ABC 123')




【注意】

不知道是不是掌控板电压不够,虽然TTS模块已经额外供电,但是掌控板还是必须插上电,UART数据才发的出去




(调试的话,你可以购买USB CH340直接插入电脑,然后通过Serial Port Utility软件,直接向串口发送文字就能说话了)




【说中文遇到的问题】

由于掌控板好像是UTF8编码的,而且通过内置函数ubinascii.hexlify(u"中文".encode('gbk'))转换不了GBK,查看数据还是UTF8的,导致你写中文,说的是其他文字

如果ubinascii.hexlify这个函数能修好或者加个参数转GBK,那就好办了




解决方法

所以这里我临时写了个转换函数,但是必须由电脑端PC跑

比如输入内容是"你好",转换后得"[0xc4,0xe3,0xba,0xc3]",最后贴到掌控板运行,如下

uart1.write(bytearray([0xc4,0xe3,0xba,0xc3]))




【编码转换原理】

你可以通过这个网站https://www.107000.com/T-Hex/, 选择GB2312,输入文字“你” 转换得 B1C8

以2个字符进行分割,即BC和C8

前面加上0x,即0xbc和0xc8,合起来就是[0xbc,0xc8]

最后通过掌控版输出 uart1.write(bytearray([0xbc,0xc8])),就说话了

由此可见,我上面那个函数就是这个实现这个过程,暂时先这样,有问题再沟通




下载附件str2hex_gbk.rar


DFrJ5KYVQaH  中级技匠

发表于 2019-12-21 12:54:29

好,收藏学习
回复

使用道具 举报

gada888  版主

发表于 2019-12-30 07:56:07

这功能实用
回复

使用道具 举报

39H-_f3r  学徒

发表于 2020-9-5 16:29:55

你好,如果用arduino C语言的话,程序怎么写
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail