语音合成模块可以实现字符、数字及中文的语音合成,利用它的这一性能,可探索数据识读功能实现。
其处理流程如下:
提供一个待识读的数值,确定其数值大小及位数,依次从最高位进行处理,即提取当前数位的数值及权值,以便合成出数值及数量级的读音,直至处理完全部数据位。此外,还需配置一个零值读音的处理。
在使用RA2E1开发板的情况下,其测试电路如图1所示,鉴于RA2E1开发板没有USB口供电的条件,特选取了一个供能量稍强的ESP开发板来提供电压,在供电能力稍差的情况下,将无法驱动语音合成模块。

图1 测试电路连接
在功能实现方面,其涉及的程序如下:
1)发送播放指令的函数
void fszl(uint8_t p)
{
uint16_t i;
z[5]= s[p*2] ;
z[6]= s[p*2+1];
for ( i= 0 ; i< 7; i++)
{
fputch(z[i]);
}
R_BSP_SoftwareDelay (2000, BSP_DELAY_UNITS_MILLISECONDS);
}2)实现数据识读的功能函数
void szsd(uint16_t k)
{
uint16_t u=1;
uint8_t w,p=0,f=0;
if(k>10)
{
w=1;
u=10;
}
if(k>100)
{
w=2;
u=100;
}
if(k>1000)
{
w=3;
u=1000;
}
while(w>0)
{
p=k/u;
if(p>0)
{
fszl(p);
if(w==3)
{
fszl(14);
}
if(w==2)
{
fszl(13);
}
if(w==1)
{
fszl(12);
}
f=1;
}
else
{
if(f==1)
{
fszl(0);
}
f=0;
}
k=k%u;
if(w>0)
{
w=w-1;
u=u/10;
}
}
fszl((k%10));
}3)数据识读功能的测试主程序
void hal_entry(void)
{
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
szsd(1024);
while(1);
}经程序的编译和下载,其测试结果如图2所示。

图2 测试结果
至此,关于语音合成模块方面的探索和研究就暂时告一段落啦!
演示视频:
我要赚赏金
