c语言数字语音播报,金额数字语音播报

本文介绍了使用C语言实现数字语音播报的方法,通过录制0-9的wav文件,结合金额字符串,实现语音播报功能。当遇到系统不支持语音或者需要添加单位时,代码会根据数字字符串转换成对应的语音文件进行播放,支持亿元以下的金额播报。
摘要由CSDN通过智能技术生成

最近在做一个语音播报功能,开始是用Speech做的。感觉效果还不错,直接可以文字转语音,然后播报出来。但是后面再测试机器上,发现播放的是英语,搜索过后发现需要语音支持。还有可能有些系统整个语音功能都可能被阉割了,所以只能另外想办法了。

另起思路:其实只有数字变化的,其他语音文字一般是固定的。那么我们可以把0-9单独录制为10个wav文件,然后把金额数字拆分为char,播放对应的文件不就OK了吗!说干就干:

1d735b1622e8bbfbeda83d92c6c8a626.png

先把需要的文件录制出来,具体实现代码如下:

Task.Run(() =>

{

decimal payAmt = 123.56M;

string payString = payAmt.ToString("F2");

//播放固定的前缀语音“龙支付收款”

using (SoundPlayer simpleSound = new SoundPlayer($"{Application.StartupPath}\\auido\\ccb.wav"))

{

simpleSound.Play();

//这里需要等待,具体时间为语音文件的长度

System.Threading.Thread.Sleep(1450);

foreach (var item in payString.ToArray())

{

//播放具体数字

simpleSound.SoundLocation = $"{Application.StartupPath}\\auido\\{item}.wav";

simpleSound.Play();

System.Threading.Thread.Sleep(400);

}

//播放元

simpleSound.SoundLocation = $"{Application.StartupPath}\\auido\\yuan.wav";

simpleSound.Play();

}

});

看起来功能已经实现了,只是听起来感觉有点迟钝的样纸,但是先这样吧。提交给测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值