csharp:Google TTS API text to speech
2020-11-16 00:20
标签:com class blog http code div string tar ext art tab csharp:Google TTS API text to speech,搜素材,soscw.com csharp:Google TTS API text to speech 标签:com class blog http code div string tar ext art tab 原文地址:http://www.cnblogs.com/geovindu/p/3695232.html
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
{
///
/// Csharp: Google TTS API 文本语音读取
/// 涂聚文
///
public
partial
class
Form2 : Form
{
///
///
///
///
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();
}
///
///
///
public
Form2()
{
InitializeComponent();
}
///
///
///
///
///
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
);
///
/// 英文可以,中文不行
///
///
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();
}
}
///
/// 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
///
///
///
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
文章链接:http://soscw.com/essay/21572.html