2012-12-21 16:26:08 yylsheng 阅读数 42026
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松
Google提供了一个在线语音识别的API接口,通过该API可以进行中文、英文等语言的识别。
 API地址:http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN&maxresults=1
参数解释

 xjerr:错误标准

 client: 客户端类型

 lang:待识别语言类型,en-US是英文,中文为zh-CN

 maxresults最大返回识别结果数量

识别基本流程:
从音频输入设备获取原始音频并编码或直接调用音频文件。
将音频POST至接口地址。
分析处理返回的JSON并得出结果。
请求接口
地址:如前
请求方式:http post
请求数据:编码后的音频数据
音频编码格式:wavspeexflac
音频采样频率:8000Hz11025Hz16000Hz22050Hz24000Hz32000Hz44100Hz48000Hz
主要优点
语音识别引擎庞大,识别精度很高,适用于文本语音识别。提供多国语言的语音识别。
任何平台都可以进行访问,容易使用。
主要缺点
API未开放,未能获知具体开发细节。
识别引擎位于服务器端,识别的速度和网络质量有关,识别速度较慢。
待识别音频的格式、大小、时长的限制。
 
 

MicrosoftSpeech SDK

Microsoft Speech SDK是微软公司提供在Windows平台上开发语音识别和语音合成应用程序的开发包,简称为SAPI,内含SRSpeech Recognition)和SSSpeechsynthesis)引擎,因此可以很方便地在自己的应用程序中添加这些功能。
该语音引擎支持多种语音的识别和朗读,包括英文、日文、中文等。微软推出的应用编程接口API,虽然现在不是业界标准,但是应用比较广泛。
识别基本流程:
从音频输入设备获取原始音频并编码或直接调用音频文件。
设定语音引擎和识别上下文等内容,配置本地访问属性。
分析处理得到的文本结果
请求接口
请求方式:本地访问
请求数据:编码后的音频数据
音频编码格式:wav
音频采样频率:8000Hz11025Hz16000Hz22050Hz24000Hz32000Hz44100Hz48000Hz
主要优点
基于COM组件,便于与DirectShow中的组件整合。
语音识别引擎位于本地,便于访问,识别速度较快。
待识别音频的大小、时长无限制。
主要缺点
缺少其他平台的支持,仅支持windows平台。
语音识别引擎不够庞大,识别精准度较低。
仅提供中日英三种语言的语音识别功能。
 
 

 iFLY Mobile Speech Platform 2.0

科大讯飞为开发者提供了语音应用开发平台,提供语音合成、语音听写、语音识别、声纹识别等服务,为语音应用开发爱好者提供方便易用的开发接口,使得用户能够基于该开发接口进行多种语音应用开发。
其主要功能有:
实现基于HTTP协议的语音应用服务器,支持语音合成、语音听写、语音识别、声纹识别等服务
提供基于移动平台和PC上的语音客户端子系统,内部集成音频处理和音频编解码模块,提供关于语音合成、语音听写、语音识别和声纹识别完善的API
只需要在http://open.voicecloud.cn上申请成为开发者,便可以下载相关的SDK和开发文档。
主要优点
支持平台丰富,各个平台上都有相应的详细SDK文档
语音识别引擎较庞大,对中文的识别精度很高。
具端点检测功能,便于划分识别文本的句子。
主要缺点
识别引擎位于服务器端,须远程访问,识别速度较慢。
对语言支持不如Google,目前仅支持中文听写。
需要使用1028端口,在某些地方会有使用限制。
当软件用户达到百万次后,需要开始收费。
 
 
测试流程:
从麦克风输入语音并编码或直接调用音频文件,调用的音频文件主要是从电影或是新闻节目中提取其音频,前者主要体现识别语音口音的多样性,后者是体现识别语音口音的正规性,从麦克风输入体现对针对某个人特定的口音。主要测试音频文件格式为wavflacflac需要由相同采样率的wav转换而来)测试采样率有8KHz16KHz24KHz32KHz44.1KHz
分析各个引擎的识别准确度和花费时间时,选取了5段时长为25S、平均长度为150个中文字符的音频作为其测试音频,记录识别正确的文字和花费时间,准确度以识别正确的文字/文本总字数,同时包含识别出的单独的字、词,花费时间对于非本地引擎需要考虑音频传送和结果返回的时间。
分析各个引擎中语速对识别准确度的影响,针对同一文本,测试不同语速(分为慢速、中速、快速)的音频,且时间均控制在25S,仅选取了24KHz44.1KHz音频进行测试,因为由测试准确度的测试中,已经得出在24KHz44.1KHz情况下,识别精确度较高。
分别用googleMicrosoft和科大讯飞语音识别引擎对测试音频文件进行测试。其中使用google和科大讯飞引擎需通过访问其相关服务器,而Microsoft的语音识别引擎则是从本地进行访问。
对所得结果进行数据分析,列出数据表格,分析各自引擎的优缺点。
 
测试结果:
语速对识别时间的影响
                        慢速                 中速                   快速
Google              8s                   8.94s               10.125s
SAPI                6.06s               6.63s                 5.375s
科大讯飞          34.6s               35s                     23.6s
 
语速对识别精度的影响
                        慢速                 中速                   快速
Google           78.93%           77.52%               11.58%
SAPI               28.7%             42.79%               6.81%
科大讯飞         78.2%             80.48%              15.53%
 
结果评价:
1.Google
Google语音识别引擎可以识别wav格式音频,但是测试所用wav均为非原始wav故识别精度很低,若将其转换为flac后则识别精度增加。对于flac格式中文音频,快速语音准确率达到11.58%,中速语音准确率达到72.52%,平均花费时间8.94S。慢速语音准确率达到78.93%,平均花费时间为8S。对于英文音频,快速语音准确率达到40.22%,中速语音准确率达到89.2%,慢速语音准确率达到80.58%,平均花费时间各为9.2s8.5s9.9s
不同的音频采样率对识别效果和花费时间有影响,识别效果主要体现在音频中间部分名词和音频末端1s的识别结果,于中文而言新闻类平均准确率为72.37%,电影类平均准确率为44.36%。于英文而言,电影类平均准确率为35.3%。平均花费时间采样率越大,识别时间越短,如24KHz44.1KHz的同样内容音频,后者时间少1S左右。
对于google语音识别引擎,由于语速过快会导致识别不准确,会出现多个音识别为一个字的现象,故所用时间较短,但是准确度较差。而语速过慢时,虽然语音的特征更加明晰会使得准确率上升,但是字与字之间的联系不密切,会出现本该是一个词却识别为同音的两个字,导致准确率下降,故其平均准确率和中速识别率相当,另一方面是所需识别的字较少,故识别时间相对中速短。
对于视频流提取的音频和麦克风输入人声的识别,麦克风输入人声的平均准确度高于视频流中的的平均准确度,原因是视频流中的人声会带有各种口音一般带有背景噪音,而麦克风输入人声是单一的稳定的,背景噪音较小。准确度顺序大致为:新闻类>特定人>电影类,但不能忽略电影中也存在普通话标准发音。对于时间长度为20s以上的快速语音,测试期间无法识别,一直未能返回正确结果。不知原因。对于特定人输入的音频,音频头尾都可正确识别。若是输入视频流中音频,头尾1S的内容都不能很好的识别,容易出错。
Google语音识别引擎数据库丰富,可以识别大部分日常用语,还包括当下流行词汇,人名,地名等。对于新闻类词汇判别比较准,而特定专业类名词通常以同音字代替。
对于google识别的时间包括网络发送音频数据包时间,识别花费时间,返回结果时间。由于引擎位于服务器,需要通过网络访问,故网络质量在识别时间上占据极重要的位置,识别过程中经常会发生访问延迟、访问超时和请求无效等错误,故应该在网络良好的条件下使用google引擎,这也是非本地语音引擎库的缺点。同时音频文件超过1M时,也无法正确返回结果,估计是服务器的文件限制。
若考虑语音的精准度,则倾向于选择google语音识别引擎。
 
 
2.SAPI
微软的SAPI语音识别引擎可以识别任意采样率的wav格式音频,当采样率比较低时如仅为8KHz,音频内容采样过程中会缺失,故识别不准确,理论上来说,采样率越高,识别精度越好。但是采样率超过一定值后,改进并不明显。经过测试得出以44.1KHz采样率识别精度较好,且花费时间较短。快速语音准确率为6.81%,中速语音准确率达到42.79%,平均花费时间6.63S。慢速语音准确率达到28.7%,平均花费时间为6.06S。识别效果主要体现在音频中间部分名词和音频末端1s的识别结果,新闻类平均准确率51.48%,电影类平均准确率为41.43%,特定人平均准确率为53.06%
对于特定人输入的音频,音频头尾都可正确识别。若是输入视频流中音频,头尾1S的内容容易漏识别,且漏识别内容并非不显示,而是以其他文字代替诸如“他、淡”等字,影响了识别结果的理解。
微软语音识别引擎数据库位于本地,访问方便、快捷,无需考虑网络延迟、音频文件过大无法传送等问题。其缺点便是本地数据库的大小限制了其识别精度,需要通过长时间的训练才有可能达到比较高的精准度,而相比之下google引擎数据库可以收集网络上的所有资料,训练文本并不缺乏,容易达到很高的精准度。SAPI可以识别大部分日常用语和常用的新闻词汇,但是对当下流行词汇,人名,地名识别精度很低,对特定专业类名词通常也以同音字代替。
 
 
3.科大讯飞
科大讯飞语音识别引擎仅可识别wav格式音频,为了达到理想的效果,有诸如条件限制,如音频须为采样率16KHz、每采样一点16bit、单声道,且音频长度小于90s。由于具有端点检测功能,每句话的长度不宜过长。快速语音准确率达到17.63%,平均花费时间29.2S。中速语音准确率达到80.48%,平均花费时间35S。慢速语音准确率达到78.2%,平均花费时间为34.6S。平均花费时间比另外两个引擎多了许多,主要原因是其端点检测功能,故一次能识别的语句长度有限制,需要分段识别,因此加长了识别的时间。
端点检测的好处是方便音频中句子的分段,易于对对识别结果的理解。
其引擎库也是位于服务器,需要通过网络访问,识别的时间包括网络发送音频数据包时间,识别花费时间,返回结果时间。网络质量在识别时间上也占据极重要的位置,且其需要开启80/1028端口后才能有效使用该引擎。待识别的音频需要质量清晰,一般对于网上流媒体而言,声音质量不高,识别较困难。
 
以上的SAPI和科大讯飞的测试DEMO都是用他们SDK里自带的。GOOGLE的C#代码可参照http://www.cnblogs.com/eboard/archive/2012/02/29/speech-api.html
另外介绍关于google语音识别的内容还可以参照http://blog.csdn.net/dlangu0393/article/details/7214728本文中有转载其小部分内容。
 
 
由于测试样本数量并不算多,因此以上测试仅供参考。
                                                                    
 
 
 
 
 
 
 

 

2019-08-05 14:56:39 MysteryLi 阅读数 466
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松

最近因项目需求,接了微软认知服务的语音识别接口(以下简称语音识别),期间也踩了很多坑最后成功接通。众所周知,国内有很多语音识别的SDK,但是这些SDK都是偏向于中文语音识别,对于英文的识别率很低,所以经过多家SDK的对比,我选择了微软的语音识别,微软的语音识别对英文的识别率很高。下面就来说下如何来接语音识别。

首先从微软认知服务官方的GitHub上下载SDK包,然后将下载的Speech SDK .unitypackage文件导入Unity工程,然后在场景中新建Text,Button,如下图所示

然后在项目中添加代码,命名为MicroSoftASRDemo,编辑脚本,用一下代码替换,其中的YourSubscriptionKey使用Speech Services订阅密钥找到并替换该字符串。YourServiceRegion为与您订阅密钥相关联的区域,免费试用版的为westus。(订阅密钥获取方式点击这里)然后将脚本保存,然后挂载到场景中的一个gameobject上。

using UnityEngine;
using UnityEngine.UI;
using Microsoft.CognitiveServices.Speech;
using System;
using UnityEngine.SceneManagement;
#if PLATFORM_ANDROID
using UnityEngine.Android;
#endif

public class MicroSoftASRDemo : MonoBehaviour
{
    // Hook up the two properties below with a Text and Button object in your UI.
    public Text outputText;
    public Button startRecoButton;
    public Button returnMainBtn;

    private object threadLocker = new object();
    private bool waitingForReco;
    private string message;

    private bool micPermissionGranted = false;

    public int Rec = 0;//0:未开始录音 1:录音中 2:结束录音


#if PLATFORM_ANDROID
    // Required to manifest microphone permission, cf.
    // https://docs.unity3d.com/Manual/android-manifest.html
    private Microphone mic;
#endif

    public async void ButtonClick()
    {
        // Creates an instance of a speech config with specified subscription key and service region.
        // Replace with your own subscription key and service region (e.g., "westus").
        var config = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

        // Make sure to dispose the recognizer after use!
        using (var recognizer = new SpeechRecognizer(config))
        {
            lock (threadLocker)
            {
                waitingForReco = true;
                Rec = 1;
            }

            // Starts speech recognition, and returns after a single utterance is recognized. The end of a
            // single utterance is determined by listening for silence at the end or until a maximum of 15
            // seconds of audio is processed.  The task returns the recognition text as result.
            // Note: Since RecognizeOnceAsync() returns only a single utterance, it is suitable only for single
            // shot recognition like command or query.
            // For long-running multi-utterance recognition, use StartContinuousRecognitionAsync() instead.
            var result = await recognizer.RecognizeOnceAsync().ConfigureAwait(false);
            //print(result + "        . . . . . . . . . . . ");

            // Checks result.
            string newMessage = string.Empty;
            if (result.Reason == ResultReason.RecognizedSpeech)
            {
                newMessage = result.Text;
                
            }
            else if (result.Reason == ResultReason.NoMatch)
            {
                newMessage = "NOMATCH: Speech could not be recognized.";
            }
            else if (result.Reason == ResultReason.Canceled)
            {
                var cancellation = CancellationDetails.FromResult(result);

                newMessage = $"CANCELED: Reason={cancellation.Reason} ErrorDetails={cancellation.ErrorDetails}";
            }

            lock (threadLocker)
            {
                message = newMessage;
                SpeechInfo.SpeachText = message;
                waitingForReco = false;
                Rec = 2;
            }
        }
    }

    void Start()
    {
        if (outputText == null)
        {
            Debug.LogError("outputText property is null! Assign a UI Text element to it.");
        }
        else if (startRecoButton == null)
        {
            message = "startRecoButton property is null! Assign a UI Button to it.";
            Debug.LogError(message);
        }
        else
        {
            // Continue with normal initialization, Text and Button objects are present.

#if PLATFORM_ANDROID
            // Request to use the microphone, cf.
            // https://docs.unity3d.com/Manual/android-RequestingPermissions.html
            message = "Waiting for mic permission";
            if (!Permission.HasUserAuthorizedPermission(Permission.Microphone))
            {
                Permission.RequestUserPermission(Permission.Microphone);
            }
#else
            micPermissionGranted = true;
            //message = "Click button to recognize speech";
#endif
            startRecoButton.onClick.AddListener(ButtonClick);
            returnMainBtn.onClick.AddListener(MainScene);
        }
    }

    private void MainScene()
    {
        SceneManager.LoadScene("Menu");
    }

    void Update()
    {
#if PLATFORM_ANDROID
        if (!micPermissionGranted && Permission.HasUserAuthorizedPermission(Permission.Microphone))
        {
            micPermissionGranted = true;
            message = "Click button to recognize speech";
        }
#endif

        lock (threadLocker)
        {
            if (startRecoButton != null)
            {
                startRecoButton.interactable = !waitingForReco && micPermissionGranted;
            }
            if (outputText != null)
            {
                outputText.text = message;                
                Rec = 0;
            }
        }
    }

}

在编辑器中运行,点击button,然后说出英文短语或者句子,识别完成后,你所说的话将会被转录为文本,并将该文本显示到窗口中,至此语音识别已成功接入。

下一篇我将会介绍微软认知服务语音合成的接入方式

2019-05-16 14:37:08 qq_43019717 阅读数 1689
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松

大家好,上期小君给大家分享了语速对语音引擎识别的影响,相信大家对语速对识别的影响有了初步的认识。经过一个多月的调研,小君本期给各位带来了一次新的评测,即科大讯飞,百度,思必驰,云知声四家语音引擎在降噪性能上的差异。
本次评测主要是对比每家语音识别引擎降噪性能,采取将语音文件直接送接口的方式进行测试,接口同样是基于各家公司给广大语音开发爱好者提供的开源开发接口。
测试语音信息详情如下:
• 音频编码格式:wav
• 音频采样率:16000Hz
• 文本字数:每条平均8字左右,共计1586字。
• 音频分类:安静环境下音频、SNR=15环境下音频、SNR=5环境下音频(SNR为信噪比)
• 音频领域:手机基本操作,领域涉及有常用应用,导航,音乐,天气,设置,日期6个领域,共计200条
• 音频信息:北方自然语速,男女比例1:1,共计20人
• 噪音合成:采取噪音合成的方式对纯净音频进行加噪
• 噪音:中文歌曲

展示一下文本样例:

  1. 导航领域:请帮我绕开从王府井到西单的拥堵地段
  2. 设置领域:设置每周一早上7点的闹钟
  3. 手机基本操作领域:发短信给小明

由于本次测试采取的是直接将数据送入识别接口的方式进行,没有类似于终端产品对整个环境的收音模块,所以噪音不能直接以播放的方式进行增加,但咱们还得测试不同信噪比下的数据呢,难不倒小君的,小君有噪音合成工具!可以将选定的噪音数据与语音数据进行,且SNR可设定,问题解决,而且还能更好的保证噪音数据一致性!
语音识别引擎在噪音消除方面的性能好坏会基于产品的定位,对不同的噪音也会有不同的处理方式,本次小君选取噪音集为常用噪音集,中文歌曲;由于本次测试专注于降噪算法的对比,为了减少变量、保证数据一致性,选取的语音数据为消音室录制的语料。

测试数据的信息大家了解的差不多了,那让我们来看一下对比结果,来分析各引擎的优缺点吧。
首先我们通过识别引擎在不同噪音环境下进行识别率的对比,通过下图数据可以看出科大讯飞和思必驰在三种环境下识别率差异不大,识别率从安静环境到SNR=5环境下降了1%左右,表现较好。百度在安静条件的语音识别率达到了97.51%,SNR=15时识别率为96.35%,SNR=5时降到了81.26%,可以看出随着噪音声压级的增大,百度识别引擎的降噪算法性能出现了大幅度的下降;云之声则时安静条件到SNR=15时下降幅度较大,从94.41%下降到了89.78%。SNR=15到SNR=5时的识别率下降幅度较小。

然后再对四款语音识别引擎间进行识别率的对比,可以看出安静条件下,云之声较其他三款产品的识别率最低,识别率为94.41%;SNR=15时,科大讯飞和思必驰表现较好,云之声相对较差,识别率为89.78%;随着背景噪音声压级的增大,在SNR=5时,百度识别率下降幅度较大,下降到81.26%,云之声同样较差,识别率为87.33%。测试详细数据如下:
在这里插入图片描述
在这里插入图片描述
(备注:以上测评结果仅基于本次验证集)

综合以上两方面的对比,基于本次测试数据的测试结果可以看出,科大讯飞和思必驰在降噪处理方面综合表现较好,百度和云之声在该方面则表现较差。
另外小君在本次测试过程中发现一个有趣的现象,思必驰识别引擎在安静条件下要比SNR=15时的识别率要低0.19%。为了搞清楚这0.19%的差距在哪,小君将两组测试结果分别对比,发现差异并不大,仅有6条语音的识别结果存在差异,主要体现在安静条件下的替换错误增加,而SNR=15条件下插入错误增加,下面列举一下部分识别结果供大家参考。
在这里插入图片描述

本次小君仅从中文音乐噪音的消除性能方面对四款公开的识别引擎进行了对比,不作为评价四款识别引擎降噪性能好坏的评价标准。因为仅仅是音乐噪音又区分了不同的语言、高中低频等,如果您想了解识别引擎的整体降噪性能,需要多个维度进行测评,对语音识别引擎降噪算法的测试感兴趣的话,可以随时联系小君,小君表示热烈欢迎。

2019-04-03 18:53:42 qq_43019717 阅读数 3269
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松

大家好,时间过得真快,转眼进入到四月份了,语音测评君又给大家带来了新一期语音相关的测评报告。结合现在语音算法公司越来越多的情况,本次小君针对当前市场份额较大的几家算法公司,分别测试了语速对语音引擎识别结果的影响。这几家公司分别是科大讯飞,百度,思必驰信息科技和云知声信息科技有限公司。每个公司都有自己的开发平台,给广大语音开发爱好者提供的开源的开发接口,给大家提供了相关的SDK和开发文档。
本次测评主要是对比每家语音识别引擎对快中慢语速的处理,测试语音信息详情如下:
 音频编码格式:wav
 音频采样率:16000Hz
 文本字数:每条平均60字左右,共计615字。
 音频分类:分为快语速、普通语速、慢语速,共计30条音频,每类10条
 音频领域:歌曲、闲聊
正常情况下,不同人说话的语速是不一样的,有人说话快,有人说话慢。所以小君这次测试的出发点是站在人正常说话的角度考虑的,并没有仅仅是为了测试算法而去设置极限值。

展示一下文本样例:

  1. 这是一首唱给母亲听的歌曲,他曾经在综艺节目笑着谈起母亲逝世前的点滴,十分感人。毛不易的另外一首歌曲《消愁》的词沉浸着对生活的深切感悟,可以扎人心。
  2. 现在中国的男人比女人多那么多,可以说一定是有几千万是娶不到媳妇的。这绝对不是危言耸听,这就是事实,而且很可能有些男同胞已经感觉出来了。

语音文本的信息相信大家了解的差不多了,那让我们来看一下对比结果,来分析各引擎的优缺点吧。
(备注:以上测评结果仅基于本次验证集)

结果分析:基于本次验证集的数据对比分析,百度和科大讯飞的语音识别引擎在慢语速识别率较其他两个厂家存在一定的差距,百度慢语速语音识别率为46.50%,科大讯飞为75.11%,而另外两家的慢语速识别率分别达到了98.70%和95.45%。四家算法厂商在普通语速和快语速方面的识别率还是相当高的。
由于小君仅仅测试了音乐和闲聊两个领域,可能这两个领域并不是百度和讯飞的专长,如果想看更多领域的测评结果,您可以联系语音测评君,小君欢迎您随时关注和联系!

2020-03-12 01:14:23 qq_39471885 阅读数 36
  • AndroidStudio开发APP-脸脸[网络版]

    本项目可拓展为适用于人脸识别、人脸签到、出席会议等相关场景中。【项目源码放在最后一节的课件里了】脸脸【网络版】项目的实现技术支撑包括My SQL数据库服务器、Java Web后台管理和Android移动APP。其中后台管理使用My Eclipse集成开发工具和Tomcat服务器;Android移动APP使用Android Studio集成开发工具。 后台管理提供接口与Android移动APP进行数据交互功能描述1.人脸库 通过移动端APP采集数据信息,提交到后台处理,最后存储到数据库中;也可以直接批量的存储到数据库中,完成人脸库的数据采集。2.移动端APP 具备采集和签到两个功能,采集功能收集用户的人脸图像和个人基本信息。 签到功能,用户刷脸后,与后台采集的信息对比,并显示最终的结果信息,成功识别则进行语音播报,在后台记录存储记录。 附: 移动端的开发是基于“AndroidStudio开发APP-脸脸[单机版]”,所以这块不熟悉的可以先看[单机版]后再来学习[网络版]。 最近周围有施工的噼里啪啦的心烦意乱脑仁疼,但是全部知识点都ok,大家只需要在自己关心的地方拓展完善即可,我相信大家只要看了之后,肯定都会有所收获的。

    131 人正在学习 去看看 朱松

引言

这个计划到今天也就完成了,原本按照计划是要实行三步走策略:
1.TTS文字转语音模块的学习
2.LD3320 语音识别模块的学习
3.单片机吧两者结合起来

骚想法

在这里插入图片描述
之后浮现了一个骚想法:
我只接就把语音识别模块和语音识别摸块TX RX数据接口连接起来,这样子的话,语音识别模块识别的内容就之际输出给TTS文字转语音模块直接输出。这样子我的单片机就不用进行编程,直接负责电源的供给就行了。
在这里插入图片描述
就这样,当我学完LD3320语音识别模块我就大功告成了。
接下来就讲讲这个具体配置方法
在这里插入图片描述

配置方法

文字转语音模块:

在这里插入图片描述
我没有被修改过,因为我没有多的口,所以新主人也不知道怎么改,看到我,也就没什么欲望了。。。
我只是负责把连接我的串口打印的内容说出来,你要我说一,我就说一。我真的很老实,不过不知道为什么,我好像有点毛病,有些话说不好,比如:律师函,说的很模糊,不知道是什么。我也很无语呀,主任也没法给我改。
在这里插入图片描述
PS :主人:有点不太给力,感觉有好些词读错了,改不动,下次买个更好的。。。(依依不舍)

单片机:

在这里插入图片描述
我就只负责给你一个VCC和GND,其他不要问我,我什么都不知道。
在这里插入图片描述

PS:主人:这里的电源最好在设计的时候做好滤波,不然会干扰语音识别模块,导致语音识别模块一直重启。这块板子上的5V就没有做好滤波,导致语音模块一直重启。
还好语音模块支持3.3V的,接到了3.3V上去可以成功运行。
在这里插入图片描述

重头戏: 语音识别模块:

在这里插入图片描述

我里面的程序是这样的

下面展示一些 内联代码片

/***********************************************************
* 名    称:用户执行函数 
* 功    能:识别成功后,执行动作可在此进行修改 
* 入口参数: 无 
* 出口参数:无
* 说    明: 通过控制PAx端口的高低电平,从而控制外部继电器的通断					 
**********************************************************/
void 	User_handle(uint8 dat)
{
     //UARTSendByte(dat);//串口识别码(十六进制)
		 if(0==dat)
		 {
		  	G0_flag=ENABLE;
				LED=0;
		 }
		 else if(ENABLE==G0_flag)
		 {	
		 		G0_flag=DISABLE;
				LED=1;
			 switch(dat)		   /*对结果执行相关操作,客户修改*/
			  {
						case CODE_CMD:			/*命令“测试”*/
						PrintCom("什么事情,你这菜鸡\r\n"); //串口输出提示信息(可删除)
						PA1=1;//让PA1端口为高电平
													 break;
					
				  case CODE_DMCS:			/*命令“测试”*/
						PrintCom("当然,我是爱坤\r\n"); //串口输出提示信息(可删除)
						PA1=1;//让PA1端口为高电平
													 break;
					case CODE_KFBYZ:	 /*命令“全开”*/
						PrintCom("法克,你说什么,你这是诽谤,污蔑无中生有暗度陈仓忙天过海\r\n");//串口输出提示信息(可删除)
						PA2=1;//让PA2端口为高电平
													 break;
					case CODE_KD:		/*命令“复位”*/				
						PrintCom("`收到过律师信吗\r\n"); //串口输出提示信息(可删除)
						PA3=1;//让PA3端口为高电平 
													break;
					case CODE_GD:		/*命令“复位”*/				
						PrintCom("`唱,跳,略,打篮球\r\n"); //串口输出提示信息(可删除)
						PA3=0;//让PA3端口为低电平
													break;
					case CODE_BJ:		/*命令“复位”*/				
						PrintCom("鸡 你太美,鸡 鸡 你太没,咚咚咚咚,级 你太美!你看着碗面他 及你太美\r\n"); //串口输出提示信息(可删除)
						PA4=1;//让PA4端口为高电平
													break;
//					case CODE_SH:		/*命令“复位”*/				
//						PrintCom("“上海”命令识别成功\r\n"); //串口输出提示信息(可删除)
//						PA5=1;//让PA5端口为高电平
//													break;
//					case CODE_GZ:		/*命令“复位”*/				
//						PrintCom("“广州”命令识别成功\r\n"); //串口输出提示信息(可删除)
//						PA6=1;//让PA6端口为高电平
													break;																											
							default:PrintCom("我听不清楚,你是菜徐坤吗\r\n"); //串口输出提示信息(可删除)
													break;
				}	
			}	
			else 	
			{
				PrintCom("请说出一级口令\r\n"); //串口输出提示信息(可删除)	
			}
}	 

在这里插入图片描述
这里主要就修改这里,你要什么反馈,就修改对应的输出。
这个函数在main.c 里面;
接下来,还有一个你的语音输入修改:

下面展示一些 内联代码片

uint8 LD_AsrAddFixed()
{
	uint8 k, flag;
	uint8 nAsrAddLength;
	#define DATE_A 8   /*数组二维数值*/
	#define DATE_B 30		/*数组一维数值*/
	uint8 code sRecog[DATE_A][DATE_B] = {
																				"ai kun ji",\		
																				"ni zhi dao kun kun ma",\
																				 "ji ni tai mei",\
																				 "ni neng zen me yang",\
																				 "kun kun zui shan chang",\
																				 "zhu da ge shi sha",\
																				 "shang hai",\
																				 "guang zhou"
																			};	/*添加关键词,用户修改*/
	uint8 code pCode[DATE_A] = {
															CODE_CMD,\
															CODE_DMCS,\
															CODE_KFBYZ,\
															CODE_KD,\
															CODE_GD,\
															CODE_BJ,\
															CODE_SH,\
															CODE_GZ
														 };	/*添加识别码,用户修改*/	
	flag = 1;

函数位置:

在这里插入图片描述这个模块是采用拼音识别,所以你说的话就自己转化成拼音, 之后存放到数值B,在数值A有对应的代号,你在相应的修改。这个代号就是跟输出起到连接作用的,所以要注意了,保证正确,才不会答非所问,或者莫名其妙不回答。

计划完结

就这样三个配置好了,然后你连接就行。

最终效果

我:你知道kunkun吗?
TTS:当然,我是爱坤
我:鸡你太美
TTS:法克,你说什么,你这是诽谤,污蔑无中生有暗度陈仓忙天过海
我:你能做什么
TTS:收到过律师信吗
我:kunkun 最擅长什么?
TTS:唱,跳,略,打篮球
我:kunkun的主打哥是什么
TTS:鸡 你太美,鸡 鸡 你太没,咚咚咚咚,级 你太美!你看着碗面他 及你太美
我:滚
TTS:我听不清楚,你是菜徐坤吗?

要看看视频效果吗?

等我B站审核通过了,我就在评论区把视频附上去,大家可以看看最后的效果!

在这里插入图片描述

别走呀,最后

如果有其他的问题可以评论区指出,有问必答,知无不言。

如果有用,不妨点个赞或者关注一下,消息第一时间通知!

在这里插入图片描述

没有更多推荐了,返回首页