DQ-Form

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 using Baidu.Aip.Speech;
 10 using System.IO;
 11 using Microsoft.DirectX;
 12 using Microsoft.DirectX.DirectSound;
 13 
 14 namespace DQ
 15 {
 16     public partial class Form_main : Form
 17     {
 18         public Form_main()
 19         {
 20             InitializeComponent();
 21         }
 22         private Asr _asrClient;
 23         private Tts _ttsClient;
 24         private SoundRecord sound;
 25         private SoundPlay soundP;
 26         private string time;
 27         private string Rword;
 28 
 29         private void Form_main_Load(object sender, EventArgs e)
 30         {
 31             // 设置APPID/AK/SK
 32             var APP_ID = "10974923";
 33             var API_KEY = "API_KEY";
 34             var SECRET_KEY = "SECRET_KEY";
 35             _asrClient = new Asr(API_KEY, SECRET_KEY);
 36             _ttsClient = new Tts(API_KEY, SECRET_KEY);
 37         }
 38         
 39 
 40         private void btn_say_Click(object sender, EventArgs e)
 41         {
 42             time = DateTime.Now.ToString("yyyyMMddHHmmss");
 43             sound = new SoundRecord();
 44             sound.SetFileName(time + ".wav");//保存的文件名
 45             sound.RecStart();//录制开始
 46             btn_say.Enabled = false;
 47         }
 48 
 49         private void btn_stop_Click(object sender, EventArgs e)
 50         {
 51             sound.RecStop();//录制结束
 52             btn_say.Enabled = true;
 53         }
 54 
 55         private void btn_send_Click(object sender, EventArgs e)
 56         {
 57             AsrData();
 58         }
 59         // 识别本地文件
 60         public void AsrData()
 61         {
 62             var data = File.ReadAllBytes(time + ".wav");//获取文件字节数据
 63             var result = _asrClient.Recognize(data, "pcm", 16000);
 64             string Sresult = result.ToString();
 65             int i = Sresult.IndexOf('[') + 8;
 66             int j = Sresult.IndexOf(']') - 8;
 67             Rword = Sresult.Substring(i, j - i);
 68             listBox_result.Items.Add(Rword);
 69         }
 70 
 71         // 识别URL中的语音文件
 72         public void AsrUrl()
 73         {
 74             var result = _asrClient.Recoginze(
 75                 "http://xxx.com/待识别的pcm文件地址",
 76                 "http://xxx.com/识别结果回调地址",
 77                 "pcm",
 78                 16000);
 79             Console.WriteLine(result);
 80         }
 81 
 82         // 合成
 83         public void Tts(string Tword)
 84         {
 85             // 可选参数
 86             var option = new Dictionary<string, object>()
 87             {
 88                 { "spd", 5}, // 语速
 89                 { "vol", 7}, // 音量
 90                 { "per", 4}  // 发音人,4:情感度丫丫童声
 91             };
 92             var result = _ttsClient.Synthesis(Tword, option);
 93 
 94             if (result.ErrorCode == 0)  // 或 result.Success
 95             {
 96                 
 97                 string tts_name = "tts_" + time + ".mp3";
 98                 File.WriteAllBytes(tts_name, result.Data);
 99                 
100                 soundP.SoundPlay_mp3(tts_name);
101             }
102             
103         }
104 
105         private void btn_play_Click(object sender, EventArgs e)
106         {
107             
108             soundP = new SoundPlay();
109             soundP.SoundPlay_mp3("tts.mp3");
110 
111             // textBox_send.Text = result.ToString();
112             //Tts("明月几时有");
113         }
114     }
115 }

 

posted @ 2018-04-04 14:34  DDWK  阅读(187)  评论(0编辑  收藏  举报