1.语音合成模块说明
1.1 传感器介绍
语音合成模块是一种将文本转换为语音的技术,它通过计算机语音合成来实现。这种技 术可以广泛应用于各种领域,如语音助手、智能机器人、虚拟人物等。它通过分析输入文本 的语言学信息,结合语音库中的语音样本,生成与输入文本对应的语音波形。
1.2 工作原理
语音合成模块的工作原理是利用计算机语音合成技术,将输入的文本转换为语音波形, 然后通过 MP3设备播放出来。
具体来说,语音合成模块的工作原理可以分为以下几个步骤:
文本预处理:对输入的文本进行分析和处理,提取语言学信息,并进行相应的转换,以便声学模型可以理解并生成相应的语音波形。
声学模型训练:利用大量的语音数据,训练声学模型,使模型能够根据文本处理部分提 取的语言学信息,生成相应的语音波形。
语音波形生成:根据文本处理部分提取的语言学信息,结合声学模型生成的语音波形, 生成与输入文本对应的语音波形。
语音输出:将生成的语音波形进行编码和解码,并通过音响或耳机等设备播放出来,生成最终的语音输出。
2.注意事项
1 合适的语速和音调:语音合成模块的语速和音调应该根据应用场景和用户需求进行调整,以提供更好的听觉体验。
2 音量控制:在播放语音时,应该控制音量,避免声音过大或过小,影响听觉效果。
3.参数说明
3.1 引脚说明
3.2 规格参数
4.实现效果
4.1 例程代码
#include <Wire.h>
#define TTS_MODULE_I2C_ADDR 0x40 // 传感器的IIC地址
bool WireReadTTSDataByte(uint8_t reg, uint8_t &val)
{
/* if(!WireWriteByte(reg))
{
return false;
}
*/ Wire.requestFrom(TTS_MODULE_I2C_ADDR, 1);
// 主设备请求从设备一个字节,这个字节可以呗主设备用read()或available()接受。
while(Wire.available())
{
val = Wire.read();
}
return true;
}
bool TTSModuleSpeak(unsigned char *sign, unsigned char *words)
{
unsigned short len, i;
len = strlen(sign) + strlen(words) + 2;
unsigned char head[] = {0xFD, 0x00, 0x02, 0x01, 0x01}; // 发送数据文本编码为GB2312
head[1] = len >> 8;
head[2] = len;
Wire.beginTransmission(TTS_MODULE_I2C_ADDR);
Wire.write(head, 5);
Wire.write(sign, strlen(sign));
Wire.write(words,strlen(words));
if(Wire.endTransmission() != 0)
{
return false;
}
return true;
}
void setup() {
// put your setup code here, to run once:
unsigned char val;
Wire.begin();
Serial.begin(9600);
char arr[100] = {"welcome to china"};
TTSModuleSpeak("[h0][v10][m55]",arr); // [h0] 设置单词发音方式,0为自动发音
// [v10] 设置音量,音量范围为0—10,10为最大音量;
// [m55] 选择发音人
// [s5] 设置语速,语速范围为0-10,10为最大语速
Serial.println("Start");
delay(100);
WireReadTTSDataByte(0,val);
Serial.println(val);
delay(500);
WireReadTTSDataByte(0,val);
Serial.println(val);
Serial.println(arr);
}
void loop() {
// put your main code here, to run repeatedly:
delay(500);
}
4.2 串口打印