博舍

Arduino 语音交互 TTS语音合成(一) arduino语音交互

Arduino 语音交互 TTS语音合成(一)

大家好,我是兔子。嵌入式工程师。

专业角度带你玩转Arduino.

这次教大家用Arduino来做语音交互。准备分几个部分写。

今天就先第一部分,控制TTS语音合成模块,来播放中文语音。

1.什么是TTS

TTS是TextToSpeech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。

简单说,就是通过编写代码,让机器能把文字转换成对应的声音播放出来。

有好多种方式可以实现,我们这次就简单点,通过TTS语音合成模块来实现。

2.TTS语音合成模块

我们使用的是TTS语音合成模块,是SYN6288。通过串口收发指令,将合成好的声音通过喇叭或者耳机播放出来。

先给模块来个正面:

SYN6288TTS语音合成模块正面模块背面:

SYN6288TTS语音合成模块背面语音合成模块文本转语音TTS真人发音SYN6288兼容Arduino3.接线

模块供电是2.1V~5.5V之间的宽电压,我们就给模块供3.3V即可。

由于是串口传输指令数据,正好ArduinoUNO上有1个串口。

SYN6288TXD->Arduino0(管脚不可调整为其他管脚,烧写程序时需要将线断开烧写)

SYN6288RXD->Arduino1(管脚不可调整为其他管脚,烧写程序时需要将线断开烧写)

SYN6288VCC->Arduino3.3V

SYN6288GND->ArduinoGND

由于ArduinoUNO烧写程序也是通过串口烧写,故烧写程序时,需要将模块的4根线取下烧写。否则会导致烧写程序失败。

1)耳机接线方式如下,接好上面四根线,然后将耳机接入耳机口。

TTS语音合成模块耳机播放声音2)喇叭接线方式,需要将喇叭的两根线,接到模块的BIN0和BP0上。由于喇叭不分正负极,两个管脚可以任意接。由于兔子买的喇叭质量不好,播放声音破音了。所以就用的耳机来展示效果。

TTS语音合成模块喇叭播放声音4.程序

程序是,通过串口,将指令及语音数据发送给TTS语言合成模块。再通过耳机将合成好的声音播放出来。

效果:让ArduinoUNO通过语音合成模块,播放中文语音"欢迎光临,兔子先生"

/*程序TTS语言合成模块SYN6288程序作者:兔子效果:让ArduinoUNO通过语音合成模块,播放中文语音"欢迎光临,兔子先生"时间:19.05.19联系方式:18910297350wechat:xw2816960CONNECTIONS:SYN6288TXD->Arduino0(管脚不可调整为其他管脚,烧写程序时需要将线断开烧写)SYN6288RXD->Arduino1(管脚不可调整为其他管脚,烧写程序时需要将线断开烧写)SYN6288VCC->Arduino3.3VSYN6288GND->ArduinoGND-----------------------------------------*/charChinese_GB2312[50]={0xBB,0xB6,0xD3,0xAD,0xB9,0xE2,0xC1,0xD9,0xA3,0xAC,0xCD,0xC3,0xD7,0xD3,0xCF,0xC8,0xC9,0xFA,0x00};//欢迎光临,兔子先生(中文编码)voidSYN_FrameInfo(uint8_tMusic,uint8_t*HZdata);voidsetup(){//putyoursetupcodehere,torunonce:Serial.begin(9600);SYN_FrameInfo(0,Chinese_GB2312);}voidloop(){//putyourmaincodehere,torunrepeatedly:}/************************************************************名称:YS-SYN6288文本合成函数*功能:发送合成文本到SYN6288芯片进行合成播放*入口参数:Music(背景音乐选择):0无背景音乐。1-15:相关背景音乐*HZdata:文本指针变量*出口参数:*说明:本函数只用于文本合成,具备背景音乐选择。默认波特率9600bps。*调用方法:**********************************************************/voidSYN_FrameInfo(uint8_tMusic,uint8_t*HZdata){/****************需要发送的文本**********************************/unsignedcharFrame_Info[50];unsignedcharHZ_Length;unsignedcharecc=0;//定义校验字节unsignedinti=0;HZ_Length=strlen(HZdata);//需要发送文本的长度/*****************帧固定配置信息**************************************/Frame_Info[0]=0xFD;//构造帧头FDFrame_Info[1]=0x00;//构造数据区长度的高字节Frame_Info[2]=HZ_Length+3;//构造数据区长度的低字节Frame_Info[3]=0x01;//构造命令字:合成播放命令Frame_Info[4]=0x00|Music

Arduino语音模块

外观

概述

SpeechSynthesizerBee采用的SYN6288中文语音合成芯片是一款性价比高,语音合成更自然,面向中高端应用领域的语音合成芯片。SYN6288通过异步串口接收待合成的文本,实现文本到声音(TTS)的转换。SpeechSynthesizerBee语音合成模块采用xbee兼容接口,可以很方便的嵌入到我们开发的Arduino扩展板V5、xbee扩展板等产品中。

功能特点

支持GB2312、GBK、BIG5和UNICODE内码格式的文本;

清晰、自然、准确的中文语音合成效果;可合成任意的中文文本,支持英文字母的合成;

具有智能的文本分析处理算法,可正确识别数值、号码、时间日期及常用的度量衡符号;

具备很强的多音字处理和中文姓氏处理能力;

支持多种文本控制标记,提升文本处理的正确率;

每次合成的文本量最多可达200字节;

支持多种控制命令,包括:合成、停止、暂停合成、继续合成、改变波特率等;

支持休眠功能,在休眠状态下可降低功耗;支持多种方式查询芯片工作状态;

支持串行数据通讯接口,支持三种通讯波特率:9600bps,19200bps、38400bps;

支持16级音量调整;播放文本的前景音量和播放背景音乐的背景音量可分开控制;

可通过发送控制标记调节词语语速,支持6级词语语速调整;

芯片内固化有多首和弦音乐、提示音效和针对某些行业领域的常见语音提示音;

内部集成19首声音提示音,23首和弦提示音,15首背景音乐;

最终产品提供SSOP贴片封装形式;体积业内最小;

芯片各项指标均满足室外严酷环境下的应用;

技术指标

1.供电电压3.3-5V

2.提供TTL串口,默认波特率9600

3.提供喇叭接口

4.提供3.5耳机插孔

模块引脚定义

SYN6288芯片手册

SYN6288芯片手册

GB2312国标码检索表

汉字十六进制转换工具

Arduino实验代码如下:

/*说明:“0xB3,0xC9”代表一个字“成”,以此类推。*/#include"Syn6288.h"Syn6288syn;uint8_ttext1[]={0xB3,0xC9,0xB6,0xBC,0xBC,0xAB,0xC8,0xA4,0xBF,0xC6,0xBC,0xBC,0xD3,0xD0,0xCF,0xDE,0xB9,0xAB,0xCB,0xBE};//成都极趣科技有限公司uint8_ttext2[]={0x77,0x77,0x77,0x2E,0x64,0x66,0x72,0x6F,0x62,0x6F,0x74,0x2E,0x63,0x6F,0x6D,0x2E,0x63,0x6E};//www.dfrobot.com.cnuint8_ttext3[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0,1,2,3,4,5,6,7,8,9voidsetup(){Serial.begin(9600);//syn.Slaveboudset(19200);//修改波特率//Serial.begin(19200);}voidloop(){syn.play(text1,sizeof(text1),1);//合成text1,背景音乐1syn.play(text2,sizeof(text2),2);//合成text2,背景音乐2syn.play(text3,sizeof(text3),3);//合成text3,背景音乐3}

本文整理于DFRobotwiki

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇