csharp:Google TTS API text to speech
2014-04-27 21:33
316 查看
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
- Google Text to Speech API and AIR
- Google非官方的Text To Speech和Speech Recognition的API
- 利用Google Speech API实现Speech To Text
- 利用Google Speech API实现Speech To Text
- Android TTS 中文 文字转语音 使用TextToSpeech Svox
- Microsoft Speech API 5.3 Text-to-Speech Tutorial
- 使用Svox实现中文转语音TextToSpeech(TTS)
- 学习Microsoft Speech SDK TTS(text to speech)简单运用
- Android TTS 中文 文字转语音 使用TextToSpeech Svox .
- Android TTS 英文或中文(要下载中文支持包)转语音 使用TextToSpeech
- xe5 android tts(Text To Speech) [转]
- nodejs 调用百度TextToSpeech的api
- 在 Windows Phone 7 编写 TTS 程序 (Text to Speech)
- xe5 android tts(Text To Speech)
- Android应用开发提高篇(2)-----文本朗读TTS(TextToSpeech)
- TTs技术 Text to speech
- 语音合成TTS(Text To Speech)和语音识别ASR(Automatic Speech Recognition)
- TextToSpeech(TTS)功能
- Android TTS(TextToSpeech)语音输出与RecognizerIntent语音识别