.Net里面自带了一个语音类库:System.Speech,调用系统的语音功能,就能实现string到语音的转换,很简单(记得先把电脑音量调大一下):
//Add System.Speech reference first
using System.Speech.Synthesis;
var reader = new SpeechSynthesizer();
reader.SpeakAsync("I'm a programer. Hello, world! ");
using System.Speech.Synthesis;
var reader = new SpeechSynthesizer();
reader.SpeakAsync("I'm a programer. Hello, world! ");
Hello, world! 你听到了……这里我用了SpeakAsync方法,也就是异步执行,不会阻塞主线程。你也可以直接调用Speak()方法,也就是在一个线程里面——突然想到可以利用Speak()方法来调试程序,把断点或者Log换成Speak(): 当别人辛苦的翻阅数百行的日志--而你的电脑用悠扬的语音告诉你:“This user's entity is null, here is a bug!”,高端大气上档次呀!
二、 获取本地实时天气
园子里面有很多获取天气的API文章,这里就不介绍了,给一个CSDN链接,还算比较全:天气预报API接口大全
我这里用的都是新浪的API,最简单快捷。获取本地的实时天气,分为两步:一、根据电脑公网IP 获取当前城市;二、根据城市获取天气信息。
var webClient = new WebClient() { Encoding = Encoding.UTF8 };
//Get location city
var location = webClient.DownloadString("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json");
var json = new JavaScriptSerializer().Deserialize<dynamic>(location);
//Read city from utf-8 format
var city = HttpUtility.UrlDecode(json["city"]);
//Get location city
var location = webClient.DownloadString("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json");
var json = new JavaScriptSerializer().Deserialize<dynamic>(location);
//Read city from utf-8 format
var city = HttpUtility.UrlDecode(json["city"]);
获取到的地理信息是json格式,反序列成dynamic动态类型,不需要再去创建个类去和json数据对应,C#获取json数据就和javascript中的操作差不多了,用了当然这样也就肯定没有VS的智能感知。取到的省市信息都是UTF-8编码的,所以要取出来的话,进行Decode。
//Get weather data(xml format)
string weather = webClient.DownloadString(string.Format(
"http://php.weather.sina.com.cn/xml.php?city={0}&password=DJOYnieT8234jlsK&day=0",
HttpUtility.UrlEncode(json["city"], Encoding.GetEncoding("GB2312"))));
//Console.WriteLine(weather);
var xml = new XmlDocument();
xml.LoadXml(weather);
string weather = webClient.DownloadString(string.Format(
"http://php.weather.sina.com.cn/xml.php?city={0}&password=DJOYnieT8234jlsK&day=0",
HttpUtility.UrlEncode(json["city"], Encoding.GetEncoding("GB2312"))));
//Console.WriteLine(weather);
var xml = new XmlDocument();
xml.LoadXml(weather);
这次取到的天气信息就是XML格式的了,也很方便。但需要注意的是此,构建URL的时候要把城市采用GB2312格式编码,WebClient需要指定UTF-8格式。天气信息取到了,下面就是编字符串,让它说话了,这里附上全部的代码,总共23行:
1 //Initialize Speaker
2 var reader = new SpeechSynthesizer();
3 reader.Speak("I'm a programer,Hello, World! ");
4
5 var webClient = new WebClient() { Encoding = Encoding.UTF8 };
6 //Get location city
7 var location = webClient.DownloadString("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json");
8 var json = new JavaScriptSerializer().Deserialize<dynamic>(location);
9 //Read city from utf-8 format
10 var city = HttpUtility.UrlDecode(json["city"]);
11 //Get weather data(xml format)
12 string weather = webClient.DownloadString(string.Format(
13 "http://php.weather.sina.com.cn/xml.php?city={0}&password=DJOYnieT8234jlsK&day=0",
14 HttpUtility.UrlEncode(json["city"], Encoding.GetEncoding("GB2312"))));
15 //Console.WriteLine(weather);
16 var xml = new XmlDocument();
17 xml.LoadXml(weather);
18 //Get weather detail
19 var root = xml.SelectSingleNode("/Profiles/Weather");
20 var detail = root["status1"].InnerText + "," + root["direction1"].InnerText
21 + root["power1"].InnerText.Replace("-", "到") + "级,"
22 + root["gm_s"].InnerText + root["yd_s"].InnerText;
23 reader.SpeakAsync("今天是" + DateTime.Now.ToShortDateString() + "," + city + "" + detail);
2 var reader = new SpeechSynthesizer();
3 reader.Speak("I'm a programer,Hello, World! ");
4
5 var webClient = new WebClient() { Encoding = Encoding.UTF8 };
6 //Get location city
7 var location = webClient.DownloadString("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json");
8 var json = new JavaScriptSerializer().Deserialize<dynamic>(location);
9 //Read city from utf-8 format
10 var city = HttpUtility.UrlDecode(json["city"]);
11 //Get weather data(xml format)
12 string weather = webClient.DownloadString(string.Format(
13 "http://php.weather.sina.com.cn/xml.php?city={0}&password=DJOYnieT8234jlsK&day=0",
14 HttpUtility.UrlEncode(json["city"], Encoding.GetEncoding("GB2312"))));
15 //Console.WriteLine(weather);
16 var xml = new XmlDocument();
17 xml.LoadXml(weather);
18 //Get weather detail
19 var root = xml.SelectSingleNode("/Profiles/Weather");
20 var detail = root["status1"].InnerText + "," + root["direction1"].InnerText
21 + root["power1"].InnerText.Replace("-", "到") + "级,"
22 + root["gm_s"].InnerText + root["yd_s"].InnerText;
23 reader.SpeakAsync("今天是" + DateTime.Now.ToShortDateString() + "," + city + "" + detail);
相关推荐
本项目设计是使用python语言,借助聚合数据提供的天气数据和百度AI的语音合成,实现了一个简单天气语音播报程序
python编写的语音天气预报 本系统主要包括四个函数: 1、获取天气数据 1、输入要查询天气的城市 2、利用urllib模块向中华万年历天气api接口请求天气数据 3、利用gzip解压获取到的数据,并编码utf-8 4、利用json转化...
运用python实现智能语音播报天气的功能。。。。。。。。。。。。。。。
于是乎,有了这一篇博客,这次我要做的就是用Python获取本机IP地址,并根据这个IP地址获取物理位置也就是我所在的城市名称,然后用之前的办法实现查询天气,再利用百度语音得到天气预报的MP3文件,最后播放,这样...
本程序功能是通过LabVIEW实现语音识别的功能,实现人机聊天的功能。第二个就是笨程序增加了自动联网查询天气预报功能,并以语音播报方式告知用户。
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计...基于matlab的车牌识别系统源码+项目说明(语音播报,库外识别,雾霾天气、夜间等识别).zip
本项目是一个基于安卓的天气预报项目源码,实现了QQ登录,widget桌面控件,语音播报天气,定位当前城市,查询其他地区天气等功能,代码量比较大,测试的时候不要用模拟器测试,模拟器无法载入主界面。项目代码较多...
MATLAB雾霾天气交通标志识别系统[GUI界面,语音播报]+源代码+文档说明+报告 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审...
调用讯飞sdk实现语音听写,通过中国天气网API实现天气预报
实现3天的天气预报显示,可以更换城市 刷新,可以显示今天天气的详细信息。 技术介绍: 1.首先项目实在是太小了,最开始做的时候,本来就想直接拖控件,后来发现个问题.在显示天气数据的时候,可能有10多个文本框需要...
本资源是一个基于STM32、ESP8266和DS1302的项目,实现了实时时间和天气信息的串口屏幕显示,并提供了桌面屏幕和倒计时报警功能。通过该项目,您可以搭建一个智能化的桌面屏幕,方便查看当前时间、天气情况,并设置倒...
本项目是一个基于安卓的天气预报项目源码,实现了QQ登录,widget桌面控件,语音播报天气,定位当前城市,查询其他地区天气等功能,代码量比较大,测试的时候不要用模拟器测试,模拟器无法载入主界面。项目代码较多...
并根据不同的省市情况实时的从网上获取天气信息,解析后显示在我们制作的 3D 球上。 Build: 最后将 Android 端的代码以插件的形式放入 Unity 端中,然后在 Unity 端 Build 成 apk 文件在手机中运行。
基于QT5 百度语音API 图灵机器人API 的智能语音聊天机器人 功能为:语音输入,人机对话,语音输出. 能实现语音聊天,查询天气等. 已在Windows 与 Ubuntu下测试通过
用Java编写的安卓语音对话机器人,界面和手机上的语音助手差不多,实现的功能包括智能问答、天气查询、百科查询、打开APP、创建日程等,直接在导入eclipse就可以运行,但是要配置安卓环境,具体步骤请自行百度
调用百度AI及图灵机器人aip进行语音识别,语音合成,人机交互,实现简单的人机交互,简单对话以及天气查询。 调用百度AI及图灵机器人aip进行语音识别,语音合成,人机交互,实现简单的人机交互,简单对话以及天气...
只要您在您的Android手机上安装了小i机器人客户端(Android版),就可以通过小i和手机像和朋友一样对话,直接通过您的自然语言告诉小i您的目的,小i会充分理解您的意图并且通过语音交互帮您实现打电话、问天气、设...
基于STM32的智能桌面天气预报系统实现实时天气显示,温湿度显示,日历显示;空气质量显示;收音机功能;语音识别功能,可用语音搜索天气。可用触摸屏搜索天气。具有语音识别功能,可用语音搜索天气,可进行简单的对话。...