记得上高中时,给人当会计,帮忙结算月度工资;用的就是带语音功能的计算器! 当时用起来倍儿爽,于是速度加倍,效率加速;结果让老板赔了不少钱!

就是因为这个,才对语音计算器有了深刻印象!可能是这货坑了我!哼~!

好吧,闲言少叙,直入正题吧!

最近在做一个项目,有个简单的功能,就是将文本转换成语音。

研究了这个功能后,抽空顺带做了个语音计算器!

“来银啊,上代码!”

“老大,木有银,上不了”

“哎呀我去,非逼我说粗话,来个货,把代码码上来!”

“好的,老大!”

哈哈哈,俺就是那个带点儿逗比的搬砖员儿!好吧,代码来了,小主,等急了吧?

using System;
using System.Speech.Synthesis;
using System.Collections.Generic;namespace ReadTxt
{class Program{static string num1 = "", firchar = "", lastchar = "", tempRe = "";static void Main(string[] args){Console.Title = "语音计算器";bool jump = true;do{ConsoleKeyInfo info = Console.ReadKey();switch (info.Key){case ConsoleKey.Escape: Environment.Exit(0); jump = false; break;case ConsoleKey.NumPad0:    GetKeyRead("0");     break;case ConsoleKey.NumPad1:    GetKeyRead("1");     break;case ConsoleKey.NumPad2:    GetKeyRead("2");     break;case ConsoleKey.NumPad3:    GetKeyRead("3");     break;case ConsoleKey.NumPad4:    GetKeyRead("4");     break;case ConsoleKey.NumPad5:    GetKeyRead("5");     break;case ConsoleKey.NumPad6:    GetKeyRead("6");     break;case ConsoleKey.NumPad7:    GetKeyRead("7");     break;case ConsoleKey.NumPad8:    GetKeyRead("8");     break;case ConsoleKey.NumPad9:    GetKeyRead("9");     break;case ConsoleKey.Add:        GetKeyRead("加");    break;case ConsoleKey.Subtract:   GetKeyRead("减");    break;case ConsoleKey.Multiply:   GetKeyRead("乘");    break;case ConsoleKey.Divide:     GetKeyRead("除");    break;case ConsoleKey.Enter:if (!string.IsNullOrEmpty(num1) && GetSignIsTrue(num1)){SetValue(num1);num1 = "";}else{num1 = "";if (!string.IsNullOrEmpty(num1)){Console.Beep();Console.WriteLine("Error.");}}break;default:break;}} while (jump);Console.Read();}//判断用户输入的内容是否合法static void GetKeyRead(string str){SpeechSynthesizer spvoice = new SpeechSynthesizer();spvoice.Rate = 1;spvoice.Volume = 100;if (!string.IsNullOrEmpty(num1)){firchar = num1.Substring(0, 1);lastchar = num1.Substring(num1.Length - 1, 1);}switch (str){case "加":if (firchar != "加" && lastchar != "加"){if (lastchar != "减" && lastchar != "乘" && lastchar != "除"){num1 += str;}else{num1 = num1.Remove(num1.Length - 1);num1 += str;}}break;case "减":if (firchar != "减" && lastchar != "减"){if (lastchar != "加" && lastchar != "乘" && lastchar != "除"){num1 += str;}else {num1 = num1.Remove(num1.Length - 1);num1 += str;}}break;case "乘":if (firchar != "乘" && lastchar != "乘"){if (lastchar != "加" && lastchar != "减" && lastchar != "除"){num1 += str;}else{num1 = num1.Remove(num1.Length - 1);num1 += str;}}break;case "除":if (firchar != "除" && lastchar != "除"){if (lastchar != "加" && lastchar != "减" && lastchar != "乘"){num1 += str;}else{num1 = num1.Remove(num1.Length - 1);num1 += str;}}break;default:num1 += str;break;}spvoice.SpeakAsync(str);Console.Clear();Console.Write(tempRe + num1.Replace('加', '+').Replace('减', '-').Replace('乘', '*').Replace('除', '/').Replace("等于", "="));}static bool GetSignIsTrue(string num1) {if (!string.IsNullOrEmpty(num1)){firchar = num1.Substring(0, 1);lastchar = num1.Substring(num1.Length - 1, 1);}return firchar != "加" && lastchar != "加" && firchar != "减" && lastchar != "减" && firchar != "乘" && lastchar != "乘" && firchar != "除" && lastchar != "除";}//计算static void SetValue(string num1){List<double> array = new List<double>();List<string> sign = new List<string>();num1 = num1.Replace('加', '+').Replace('减', '-').Replace('乘', '*').Replace('除', '/');string tempCap = "";char[] MyChar = num1.ToCharArray();for (int i = 0; i < MyChar.Length; i++){if (MyChar[i].ToString() == "+" || MyChar[i].ToString() == "-" || MyChar[i].ToString() == "*" || MyChar[i].ToString() == "/"){array.Add(Convert.ToDouble(tempCap));tempCap = "";sign.Add(MyChar[i].ToString());}else{if (i == MyChar.Length - 1){tempCap += MyChar[i].ToString();array.Add(Convert.ToDouble(tempCap));}else{tempCap += MyChar[i].ToString();}}}double resultTemp = 0;for (int i = 0; i < sign.ToArray().Length; i++){if (sign[i] == "*"){resultTemp = array[i] * array[i + 1];array[i] = resultTemp;array.Remove(array[i + 1]);sign.Remove(sign[i]);resultTemp = 0;i--;}else if (sign[i] == "/"){resultTemp = array[i] / array[i + 1];array[i] = resultTemp;array.Remove(array[i + 1]);sign.Remove(sign[i]);resultTemp = 0;i--;}}for (int i = 0; i < sign.ToArray().Length; i++){if (sign[i] == "+"){resultTemp = array[i] + array[i + 1];array[i] = resultTemp;array.Remove(array[i + 1]);sign.Remove(sign[i]);resultTemp = 0;i--;}else if (sign[i] == "-"){resultTemp = array[i] - array[i + 1];array[i] = resultTemp;array.Remove(array[i + 1]);sign.Remove(sign[i]);resultTemp = 0;i--;}}double answ = array[0];array.Clear();sign.Clear();tempRe += num1.Replace('加', '+').Replace('减', '-').Replace('乘', '*').Replace('除', '/') + "= " + answ + "\n";GetKeyRead("等于" + answ);}}
}

ok,这就是全部代码了,请容在下粗略的介绍下实现步骤:

1.既然是语音计算器,首先要解决的就是如何实现语音?

其实,语音功能实现起来并不复杂,微软早就封装好了一个,将文本转换成语音功能的类库,现在你要做的就是:找到它,然后把它引用到你的项目里!

什么?这个类库叫啥?

表急嘛,心急吃不了“热豆腐”,有可能“豆腐”还跑了呢,要耐心点儿,才能约到手!是吧?

好吧,介绍下这个类库,它叫“System.Speech.dll”。.net FrameWork 的安装目录里就有它的身影!装了.net FrameWork 的童鞋,可以通过以下目录去寻觅它!

大概是这个:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5

寻寻觅觅,冷冷清清,凄凄惨惨戚戚!什么?没寻觅到?

好吧,教你一招

 

打开C盘,直接搜索!

没装的,那就去网上搜吧,自己下崽儿!哈哈~!愿意装的也可以装一下!

找到的,直接引用到项目里就行了哈!

2.其次,别忘了引用下这两个命名空间:

  using System.Speech.Synthesis;  //语音类库

  using System.Collections.Generic;  //数组集合类库

3.最后,简单介绍下文本转换成语音的功能!

其实,也就几句话!

SpeechSynthesizer spvoice = new SpeechSynthesizer();  //语音类
spvoice.Rate = 1;            //使用 spvoice 设置朗读频率 [范围 -10 ~ 10]
spvoice.Volume = 80;         //使用 spvoice 设置朗读音量 [范围 0 ~ 100]
spvoice.SpeakAsync("大家好,我是博主小白!");   //开始读

好了,其他的代码就要看小主的内力了,在下就不多说了!

看小主骨骼惊奇,“英语非凡”,想是定能习得搬砖精髓,打遍天下需求,杀掉世间bug;然后走上淫僧巅峰,赢取大白美眉的!哈哈哈~!

 

拙文一篇,望各位海涵!

技术讨论群:225443677 有意者欢迎骚扰,谢谢!

转载于:https://www.cnblogs.com/LittleBai/p/5897255.html

C# 控制台语音计算器相关推荐

  1. 【PowerShell语音计算器】

    [PowerShell语音计算器] 带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币 大写,如:123.4--->壹佰贰拾叁点肆圆. 版本号 1.51 下载: http:/ ...

  2. 写给父亲的语音计算器(位图的加载,忽然领悟了资源编译器的加载c#,五)

    用小画家制作了,加,减,乘,除,0,1,2,3,4,5,6,7,8,9,=,(,)等,手绘的,48*48位图,保存为.bmp形式. 加载是这样的,好像抄写连连看程序时,抄过,直接上代码: string ...

  3. 语音计算机软件,语音计算器

    应用介绍 语音计算器是一款快速语音播报计算器,可以实时播报计算过程和结果.扩展功能强大,集计算器.科学计算器.分数计算器.汇率换算.亲戚计算器.房贷计算器.五险一金.日期计算器.进制转换.理财计算.自 ...

  4. 有声语音计算机软件,有声语音计算器

    有声语音计算器可以用来计算三角函数.四则运算等等的计算公式,集成了超多公式并且还有语音播放功能,在输入公式及相关数值后就可以马上得到最终的结果,应用广泛. 软件介绍 有声语音计算器是一款页面简洁美观. ...

  5. android语音记账,爱彼语记语音计算器记账记事本

    爱彼语记语音计算器记账记事本是一款非常实用的手机记账工具.智能语音输入技术,集多种功能于一体,还有超多贴心小功能.感兴趣的朋友不要错过了,快来下载体验吧. 应用详情: 能听懂您说出的运算表达式并秒出结 ...

  6. 写给父亲的语音计算器(加减乘除的处理C#,三)

    曾给孩子写了一个计算器把我累坏了,四个操作数,三个操作符,只有加减乘除四则运算,我的个神,三个操作符一共4*4*4=64种组合,这样写计算器,没完没了,今天写给父亲的语音计算器终于突破了.上代码: p ...

  7. Android-使用SoundPool实现语音计算器

    Android计算器的代码直接使用Android系统里面的Calculator.先找到Android 工程源码中的 Calculator(./package/app/Calculator).导入到Ec ...

  8. Python语音计算器——通过语音输入实现数学计算(附完整源代码)

    Python语音计算器--通过语音输入实现数学计算(附完整源代码) 随着人工智能技术的不断进步,语音识别技术变得越来越成熟,我们可以利用这项技术实现很多有趣的应用.本文将会介绍一个基于Python和语 ...

  9. 项目实践——语音计算器

    这个小项目是我在学习C#winform的时候做的,不得不承认C#在做桌面程序程序是Java不能比的,如果有VS这样的开发工具就如虎添翼了,我这项目是用VS2015做的,用VS2010打包安装(后来的V ...

最新文章

  1. 【讲师团招募令】14场线上万人社区大会 邀你来分享
  2. sklearn快速入门教程:(一)准备工作
  3. [转]Visual Studio 2010帮助文件MSDN安装说明
  4. springboot启动后卡住 无日志的几种情况
  5. 嵌入式软件面试(基础题)总结,不断更新
  6. 把十六进制字符转换成十进制数
  7. Flink1.12.0使用过程中遇到的异常
  8. 语言中能产生汉明窗吗_0—6岁幼儿的语言、秩序、情感、数学敏感期,有这些特点和表现...
  9. Linux 中断所有知识点
  10. Android软硬整合设计与框架揭秘教程
  11. tensorflow2.1学习--常用函数三
  12. DELL ALIEN外星人笔记本安装UBUNTU,卡死的解决办法
  13. java 解析m3u8的实例_ck播放器m3u8直连代码
  14. 数字孪生应用案例及常用技术
  15. 快速复制移动文件_如何使用F2快速移动或复制Word中的内容
  16. 关于数据库工作方面的一些感悟
  17. 计算机二级知识点——栈
  18. gamemaker学习笔记:截屏
  19. Typora 未保存文件找回
  20. rk3288 gpio控制

热门文章

  1. codevs 1230 元素查找
  2. 用VS连接oracle数据库时ORA-12504错误
  3. 白领丽人:这六行盛产“钻石王老五”
  4. MySql 内存表使用
  5. s4-8 虚拟局域网
  6. S6 文件备份与压缩命令
  7. java 基础知识巩固_Java基础巩固——《Java核心技术基础·卷一:基础知识》
  8. 分区和分片的区别_MySQL分区与分片的差异
  9. DataWorks OpenAPI企业开发实战-运维监控大屏
  10. 我在阿里招前端,我该怎么帮你?