using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using NAudio.Wave;//http://naudio.codeplex.com/
using NAudio.CoreAudioApi;
using System.Web;
using System.Media;
using SpeechLib;//NET2.0 引用 Speech sdk 5.1 在COM选项卡里面的Microsoft Speech object library引用 已经有11.0版本
using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound; namespace Speech
{
/// <summary>
/// Csharp: Google TTS API 文本语音读取
/// 涂聚文
/// </summary>
public partial class Form2 : Form
{
/// <summary>
///
/// </summary>
/// <param name="FileName"></param>
public void PlaySound(string FileName)
{
//要加载COM组件:Microsoft speech object Library
if (!System.IO.File.Exists(FileName))
{
return;
} SpeechLib.SpVoiceClass pp = new SpeechLib.SpVoiceClass();
SpeechLib.SpFileStreamClass spFs = new SpeechLib.SpFileStreamClass();
spFs.Open(FileName, SpeechLib.SpeechStreamFileMode.SSFMOpenForRead, true);
SpeechLib.ISpeechBaseStream Istream = spFs as SpeechLib.ISpeechBaseStream;
pp.SpeakStream(Istream, SpeechLib.SpeechVoiceSpeakFlags.SVSFIsFilename);
spFs.Close();
}
/// <summary>
///
/// </summary>
public Form2()
{
InitializeComponent();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form2_Load(object sender, EventArgs e)
{
this.textBox1.Text = "中华人民共和国";
//ok
WebClient web = new WebClient();
web.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 9.0; Windows;)"); string encstr = string.Empty; string filename = "tts.mp3"; //could also be tts.wav string s = "中华人民共和国涂聚文投诉"; encstr = Uri.EscapeDataString(s); Console.WriteLine(encstr); web.DownloadFile("http://translate.google.com/translate_tts?ie=UTF-8&tl=zh-cn&q=" + encstr, ".\\" + filename); //PlaySound(Application.StartupPath+"\\"+filename);
//SoundPlayer sp = new SoundPlayer();
//sp.SoundLocation = Application.StartupPath + "\\" + filename;
//sp.LoadAsync();
//sp.PlaySync();
//sp.PlayLooping();
//Device dv = new Device();
//SecondaryBuffer buf = new SecondaryBuffer(Application.StartupPath + "\\" + filename, dv);
//buf.Play(0, BufferPlayFlags.Looping);
this.axWindowsMediaPlayer1.URL = Application.StartupPath + "\\" + filename;
}
bool waiting = false;
AutoResetEvent stop = new AutoResetEvent(false);
/// <summary>
/// 英文可以,中文不行
/// </summary>
/// <param name="url"></param>
public void PlayMp3FromUrl(string url)
{
try
{
url = HttpUtility.UrlDecode(url);
using (Stream ms = new MemoryStream())
{
using (Stream stream = WebRequest.Create(url).GetResponse().GetResponseStream())//HttpUtility.UrlDecode(
{
//UTF8Encoding encoding = new UTF8Encoding();
//byte[] buffer = encoding.GetBytes(url);
//stream.Write(buffer, 0, buffer.Length);
//stream.Close(); byte[] buffer = new byte[32768];//32768
int read;
while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
//using (StreamWriter writer = new StreamWriter(stream, Encoding.UTF8))
//{
// writer.Write(url);
//} }
//using (Stream stream = request.GetRequestStream())
//using (StreamWriter writer = new StreamWriter(requestStream, Encoding.UTF8))
//{
// writer.Write(url);
//}
ms.Position = 0;
using (WaveStream blockAlignedStream =
new BlockAlignReductionStream(
WaveFormatConversionStream.CreatePcmStream(
new Mp3FileReader(ms))))
{
using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
{
waveOut.Init(blockAlignedStream);
waveOut.PlaybackStopped += (sender, e) =>
{
waveOut.Stop();
}; waveOut.Play();
waiting = true;
stop.WaitOne(10000);
waiting = false;
}
}
}
}
catch (Exception ex)
{
ex.Message.ToString();
}
}
/// <summary>
/// http://translate.google.com/translate_tts?tl=zh-cn&q=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD
/// http://translate.google.cn/translate_tts?ie=UTF-8&q=%E4%B8%AD%E5%9B%BD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD&tl=zh-cn&prev=input
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{ //var playThread = new Thread(() => PlayMp3FromUrl("http://translate.google.com/translate_tts?tl=en&q=" + HttpUtility.UrlEncode(this.textBox1.Text)));
string str = HttpUtility.UrlEncode(this.textBox1.Text);
var playThread = new Thread(() => PlayMp3FromUrl("http://translate.google.com/translate_tts?ie=UTF-8&tl=zh-cn&q=" + str));// HttpUtility.UrlEncode(
playThread.IsBackground = true;
playThread.Start();
}
}
}

csharp:Google TTS API text to speech的更多相关文章

  1. 第二篇:TTS(Text To Speech)语音合成

    TTS(Text To Speech)语音合成: 百度AI语音合成SDK文档--python SDK: https://ai.baidu.com/docs#/TTS-Online-Python-SDK ...

  2. xe5 android tts(Text To Speech)

    xe5 android  tts(Text To Speech) TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转 ...

  3. delphi xe5 android tts(Text To Speech)

    TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转语音的方法 和访问蓝牙一样,这里用javaclass的接口实现 接 ...

  4. xe5 android tts(Text To Speech) [转]

    TTS是Text To Speech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话. 以下代码实现xe5 开发的文本转语音的方法 和访问蓝牙一样,这里用javaclass的接口实现 接 ...

  5. 重新想象 Windows 8.1 Store Apps (87) - TTS: Speak Text, Speak SSML

    [源码下载] 重新想象 Windows 8.1 Store Apps (87) - TTS: Speak Text, Speak SSML 作者:webabcd 介绍重新想象 Windows 8.1 ...

  6. 必应语音API(Bing text to speech API)

    前言 Link : Microsoft Speech API overview 通过这个链接,大致了解Bing speech API的语音识别和语音合成两部分, 这次是需要用到TTS,所以就直接看TT ...

  7. 通过google cloud API 使用 WaveNet

    Cloud Text-to-Speech 中使用了WaveNet,用于TTS,页面上有Demo.目前是BETA版 使用方法 注册及认证参考:Quickstart: Text-to-Speech 安装g ...

  8. Google Map API V3开发(2)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  9. Google Map API V3开发(3)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

随机推荐

  1. iOS tableview性能优化及分析

    1.最常用的就是cell的重用, 注册重用标识符 每次滑动cell时需要先去缓存池中寻找可循环利用的cell,如果没有则再重新创建cell 2.减少cell中控件的数量 view对象尽量缩减控件的数量 ...

  2. php sapi 产生core 文件

    php sapi 产生core 文件 1) vim /usr/local/php7.1.6-debug/etc/php-fpm.conf rlimit_core = 0 改为 rlimit_core ...

  3. loj2497 [PA2017]Banany(动态淀粉质)

    link 给定一棵树,点有点权,边有边权,你每次修改一个点点权或者是修改一个边边权 你一开始在1号点,你每次改节点之后你需要移动到另一个节点,满足这个节点权值减去路径长度最大(下一次从这个节点移动)如 ...

  4. Linux-Web应用服务性能测试初探

    一.服务端与客户端的准备工作 对于服务器最想要的数据就是,每秒支持的并发数,以及相应的内存CPU使用情况. 服务端需要设置最大打开描述符的限制(以支持创建大量的socket),配置socket参数.客 ...

  5. java面向对象之封装性

    面向对象的特征之一:封装和隐藏: 一.问题的引入: 当创建一个类的对象以后,可以通过“对象.属性”的方式,对对象的属性进行赋值.这里,赋值操作要受属性的数据类型和存储范围的制约.除此之外,没有其他制约 ...

  6. for ++i i++

    study from: https://zhidao.baidu.com/question/339305815.html 处理方式的不同,速度上的微妙不同 有些高手能喜欢用++i,速度上快一点

  7. #PHP 数组添加元素、统计数组相同元素个数、改变数组key值~_~

    一.数组添加元素 1.定义和用法: array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度. 2.语法: array_push(array,value1, ...

  8. 高阶篇:4.1.2)QFDII(设计要求逐层分配给各零件)

    本章目的:明确QFDII的作用:输入为设计要求(Design Feature),输出为零件特征(Part Characteristic),将设计要求分配到每一个零件特征中去: 本章开始介绍产品结构设计 ...

  9. Angular material mat-icon 资源参考_Av

    ul,li>ol { margin-bottom: 0 } dt { font-weight: 700 } dd { margin: 0 1.5em 1.5em } img { height: ...

  10. error C2955: “std::xx”: 使用 类 模板 需要 模板 参数列表

    一般出现这个错误 最可能是一种情况 queue q;//这样写 这样写肯定错 [笑哭] queue<int> q; //正确的 我想静静了