開發工具:vs 2017
AI 平臺:http://ai.baidu.com/
準備工作
1、註冊百度賬號
2、登錄百度 AI 開發平臺,http://ai.baidu.com/
3、在控制檯點擊“百度語音”服務,點擊“創建應用”,填寫必填項,勾選額外接口,點擊立即創建獲取祕鑰。在應用列表中查看自己的id
用 360 軟件管家安裝 vs2017
創建自己的項目
1、新建項目
打開 vs2017,點擊文件,新建項目,選擇 visual C# --> windows 桌面 --> windows 窗體應用,選擇自己的項目地址,點擊確定
2、添加 baiduai 開發包
點擊引用 --> 管理 nuGet 程序包,搜索 baiduai,點擊下載
3、UI 設計
直接拖動即可,生成界面如下
4、後臺功能實現
選擇文件按鈕
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "C# Corner Open File Dialog";
//fdlg.InitialDirectory = @"c:/"; //@是取消轉義字符的意思
//fdlg.Filter = "All files(*.*)|*.*|All files(*.*)|*.* ";
///*
// * FilterIndex 屬性用於選擇了何種文件類型,缺省設置爲0,系統取Filter屬性設置第一項
// * ,相當於FilterIndex 屬性設置爲1.如果你編了3個文件類型,當FilterIndex =2時是指第2個.
// */
fdlg.FilterIndex = 2;
///*
// *如果值爲false,那麼下一次選擇文件的初始目錄是上一次你選擇的那個目錄,
// *不固定;如果值爲true,每次打開這個對話框初始目錄不隨你的選擇而改變,是固定的
// */
//fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
//textBox1.Text = System.IO.Path.GetFileNameWithoutExtension(fdlg.FileName);
filePath.Text = System.IO.Path.GetFullPath(fdlg.FileName);
}
}
開始識別按鈕
// 語音合成按鈕
private void button2_Click(object sender, EventArgs e)
{
string value = this.videoType.Text;
String filePath = this.filePath.Text;
// 設置APPID/AK/SK
String APP_ID = "14433392";
String API_KEY = "C7WMYgLeWv3Wm2yogwv5gD08";
String SECRET_KEY = "xcvwiwikALBDBaIcGisNQ6aQImtj3qua";
var client = new Asr(APP_ID, API_KEY, SECRET_KEY);
client.Timeout = 60000; // 修改超時時間
client.Timeout = 120000; // 若語音較長,建議設置更大的超時時間. ms
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] buffur = new byte[fs.Length];
try
{
fs.Read(buffur, 0, (int)fs.Length);
}
catch (Exception ex)
{
Console.Write(ex.StackTrace);
}
finally
{
if (fs != null)
{
//關閉資源
fs.Close();
}
}
var result = client.Recognize(buffur, value, 16000);
Convert.ToString(result);
JToken resultStr = null;
result.TryGetValue("result", out resultStr);
Console.WriteLine("aToken===>"+ resultStr);
voiceResult.Text = Convert.ToString(resultStr);
Console.Write(result);
}
開始合成按鈕
調用 api 中 C# SDK 的語音合成 api
https://ai.baidu.com/docs#/AS...
// 開始合成按鈕(語音合成功能)
private void synthesisButton_Click(object sender, EventArgs e)
{
String APP_ID = "14433392";
String API_KEY = "C7WMYgLeWv3Wm2yogwv5gD08";
String SECRET_KEY = "xcvwiwikALBDBaIcGisNQ6aQImtj3qua";
// 獲取輸入框的值
String value = this.Speech_Synthesis.Text;
// 將 value 轉成語音文件存放到本地
var client = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
// 可選參數
var option = new Dictionary<string, object>()
{
{"spd", 5}, // 語速
{"vol", 7}, // 音量
{"per", 3} // 發音人,4:情感度丫丫童聲
};
var result = client.Synthesis(value, option);
try {
if (result.ErrorCode == 0) { // 或 result.Success
File.WriteAllBytes("E:/prepared/北航/07_工程實踐--AI方向/作業/WindowsFormsApplication1/WindowsFormsApplication1/tmp.mp3", result.Data);
}
} catch (Exception ex) { Console.Write(ex.StackTrace); }
Play();
}
關注微信公衆號[ prepared ],後續會更新一系列有深度的 AI 文章。