AI机器人的耳朵和眼睛有算法码?

春节前后的天气预报,是需要点赞的。
很多人回去了,又回来了,避开并且躲过了大雪。不是要感恩上帝,而是要得益于AI精确的算法。

AI机器人的最大法宝,就是完全听得懂人们说话,完全看得明白人们的动作和表情,进而分析得知,人们想要AI做点什么。

如果这两样做好了,精致了,那么机器人就可以随心所欲地帮助了人。

关于听得懂的模型,只说使用过的微软的语音动态库,可惜没有下载到C++的SDK。只因怕付费而没去体验,遗憾。

以下分享一下在听得懂方面的感受:

1. 一个字、两个字、三个字的单元词汇,出错较多,需要把这些分成几种类型,人为加上词的固定前后缀才行。
例如:“滚”是听得懂的,而“东”是听错了的;“你好”是听得懂的,而“你坏”是听错了的;

2.直接使用中文字库,是容易出错的。需要重新编写自己的语音字库,把第一点里的考虑加进去,改善了很多。

3.使用各种概率或者技巧的模型,错误也多。采用一对一的定制字库,就减少了错误。
例如:“你好”,字库里就是“你好”。因平常说话也就那么一些,不用担心字库会很大。
      但是,如果听了“你”就开始分析,这个字连接多少个字的概率各是多少,
      然后分析最大的可能性来组合算是合理的结果,就出问题了。
      
4.各种概率密度函数模型已经很成熟了,不知道国内的几家成功的大佬公司,是否确实用了概率算法的模型。
由于概率书籍的晦涩难懂,世界是否还有更简单一些的做法,就算昨天才开始学习AI,也能秒懂最好。
比如:一句话的分析,先是中文分词,然后进行组合的概率模型计算,再推断出结果,或者中间还有多次验证。
 然后机器还要反复学习,才能求得最后的意思。
      
5.至于模型的复杂性,搞懂了的人很少说出来的,目前为止。
只读了一本科学家吴军的《数学之美》,确实把知道的毫无保留地告诉了读者。
虽然纯粹是兴趣,没什么打算,但是还是谢谢这样的科学家。

6.向往一种直接调用语音SDK,三两行代码就能做到听得懂、看得明白,懂你意思。
若要还好一点,就是开源了单片机语音库的程序,那就可以让有兴趣的人,随时玩玩端盘洗碗的机器人的DIY了。

7.具体的程序没有什么亮点?贴一点C#中简易实现说话听懂的试试。
数据库里有要比对的每个词或者一句话的字段,也有应对回答的字或者一句话。
不采用概率的玩法,只用最低级的说一句,答一句的办法,自己做一个吧,不停的实践,就慢慢会完整好用的。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;
using System.Threading;
using System.Globalization;
using System.IO;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Diagnostics.Contracts;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Data.SqlClient;

namespace WindowsFormsApp15
{
    
    public partial class FrmMain : Form
    {
        [DllImport("kernel32.dll")]
        public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize,                     
        int maxSize);
        public static void clear_memory()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
          FrmMain.SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
            }
        }
 
        string abb = "";
        string text5 = "";

        public FrmMain()
        {
            InitializeComponent();
           
        }
     private  void SpeechRecognitionCallback(object sender, SpeechRecognizedEventArgs e)
        {
            string result = e.Result.Text.ToLower();
            abb = result;
            textBox1.Text = abb;
            text5= result;
            this.button2.PerformClick();

        }
        private static SpeechSynthesizer synth = new SpeechSynthesizer();

        private static Mutex creat_play_mutex = new Mutex(false, "voice_play");
        private static void play_voice_process(object parameter)
        {
            FrmMain.creat_play_mutex.WaitOne();
            string textToSpeak = (string)parameter;
            FrmMain.synth.SetOutputToDefaultAudioDevice();

            FrmMain.synth.Speak(textToSpeak);
            FrmMain.creat_play_mutex.ReleaseMutex();
        }
        private void set_play_voice(string str)
        {
            new Thread(new     
        ParameterizedThreadStart(FrmMain.play_voice_process)).Start(str);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
SpeechRecognitionEngine sre = new SpeechRecognitionEngine(new CultureInfo("zh-CN"));

                var words = new Choices();
                words.Add("办公室");
                words.Add("你好点菜");
                words.Add("现在天气冷了");
                words.Add("有没有鸳鸯锅啊");
                words.Add("微辣就可以了");
                words.Add("有什么特别的介绍吗");
                words.Add("有什么青菜");
                words.Add("闭嘴别说话了");
                words.Add("有电视看吗打开空调");
                words.Add("服务员催一下菜好吗");
                words.Add("傻里巴叽的");
                words.Add("你今年多大了有男朋友没有");
                words.Add("想和你睡觉");
                words.Add("你真漂亮");
                words.Add("好烦啊");
                var gb = new GrammarBuilder();
                gb.Culture = new System.Globalization.CultureInfo("zh-CN");
                gb.Append(words);
                Grammar g = new Grammar(gb);

                sre.LoadGrammar(g);
      sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs> 
            (SpeechRecognitionCallback);
                sre.SetInputToDefaultAudioDevice();
                sre.RecognizeAsync(RecognizeMode.Multiple);
                

            }
            catch (Exception ex)
            {
                MessageBox.Show("init RS Error : " + ex.ToString());
            }

        }
       
        private void button2_Click(object sender, EventArgs e)
        {
           
            string sql = "select count(1) from talkinglib where prob_text=@Probtext";
            SqlParameter[] paras = new SqlParameter[]
            {
                new SqlParameter("@Probtext",text5 ),
             
            };
            object obj = SQLHelper.ExecuteScalar(sql, paras);
            bool flag9 = (int)obj != 0 || (int)obj > 0;
            if (flag9)
            {
                string sqlq = "SELECT answ_text  FROM [dbo].[talkinglib] 
                where prob_text="+ "'" + text5 + "'";                                                                                 

                System.Data.DataTable dt = SQLHelper.GetDataTable(sqlq);
                DataRow dr = dt.Rows[0];
                string talking = dr["answ_text"].ToString().Trim(); 
              

                Thread.Sleep(1000);
                this.set_play_voice(talking);
                this.textBox2.Text = talking;
                return;
               
            }
            else
            { 
                return; 
            }
         
        }
    }

}

8.视觉部分、机器人执行部分暂缺。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

watsonbu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值