2013-03-29 10:23:06 heartrude 阅读数 2238
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6094 人正在学习 去看看 杨波

openEars

是一个开源的语音识别+TTS库。可以在IOS下使用。

 http://www.politepix.com/openears/tutorial/


Julius

是开源语音双向处理库,不过目前仅对日语支持比较好。 Linux和Windows下都可以使用。

 http://julius.sourceforge.jp/en_index.php


SAPI

微软提供的一套语音合成和语音识别库。支持中英文。

http://www.microsoft.com/en-us/download/details.aspx?id=10121


Microsoft Speech Platform

一套更加新一点的库。也是微软提供的。不知道和SAPI什么关系。

支持VB、C#

http://www.microsoft.com/en-us/download/details.aspx?id=27226


Google的SR 网络API

http://php.oil58.com/?p=483

2014-09-18 17:27:57 ppp2006 阅读数 842
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6094 人正在学习 去看看 杨波

请高手分别搭建了mysql数据库和网页采集语音系统。今天尝试在ubuntu上部署。

首先遇到的问题是,Ubuntu下Web服务器的搭建  参考下文http://www.linuxidc.com/Linux/2012-12/75286.htm  很快搞定。

1.数据库迁移   直接拷贝过来文件,使用phpmyadmin软件导入即可。

2.软件发布。  使用/var/www下面放置了软件,但使用localhost访问时与windows上访问有差异。

设置目录属性为777 解决了图像现实不正确的问题。但后来一直登陆不进去,待解决。

lamp=linux+apache+mysql+php

2019-09-29 17:33:04 tianyawp123 阅读数 834
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6094 人正在学习 去看看 杨波

最近在试语音转文本,了解了一些相关的东西,记录一下。

一、python speechRecogniton库

python自带的speechRecognition库是一个多功能的实现语音识别的库,细节网上有很多,可以搜到,可以参考

https://blog.csdn.net/alice_tl/article/details/89684369

 

二、使用说明

  1. 安装speechRecognition库
    pip install speechrecognition

     

  2. 使用,定义不同类别的函数
    import speech_recognition as sr
    
    global r
    r = sr.Recognizer()
    
    #调用谷歌的语音api
    def google(audio):
    	try:
    		print("Google: ")
    		return r.recognize_google(audio)
    	except sr.UnknownValueError:
    		print("Google Speech Recognition could not understand audio")
    		return None
    	except sr.RequestError as e:
    		print("Could not request results from Google Speech Recognition service; {0}".format(e))
    		return "None"
    
    #使用wit的
    def wit(audio):
    	# recognize speech using Wit.ai
    	WIT_AI_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx"  # Wit.ai keys are 32-character uppercase alphanumeric strings
    	try:
    		#print("Wit.ai: ")
    		return r.recognize_wit(audio, key=WIT_AI_KEY)
    	except sr.UnknownValueError:
    		print("Wit.ai could not understand audio")
    		return "None"
    	except sr.RequestError as e:
    		print("Could not request results from Wit.ai service; {0}".format(e))
    		return "None"
    
    #调用bing的
    def bing(audio):
    	BING_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    	# recognize speech using Microsoft Bing Voice Recognition
    	try:
    		#print("Microsoft Bing Voice Recognition: ")
    		return r.recognize_bing(audio, key=BING_KEY)
    	except sr.UnknownValueError:
    		print("Microsoft Bing Voice Recognition could not understand audio")
    		return "None"
    	except sr.RequestError as e:
    		print("Could not request results from Microsoft Bing Voice Recognition service; {0}".format(e))
    		return "None"
    	
    # Query IBM
    def ibm(audio):
    
    	# recognize speech using IBM Speech to Text
    	IBM_USERNAME = "xxxxxxxxxxxxxxxxxxxxxxxxxx"  # IBM Speech to Text usernames are strings of the form XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
    	IBM_PASSWORD = "xxxxxxxxxxxxxxxxx"  # IBM Speech to Text passwords are mixed-case alphanumeric strings
    	try:
    		#print("IBM Speech to Text: ")
    		return r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD, show_all=False)
    	except sr.UnknownValueError:
    		print("IBM Speech to Text could not understand audio")
    		return "None"
    	except sr.RequestError as e:
    		print("Could not request results from IBM Speech to Text service; {0}".format(e))
    		return "None"
    
    #使用sphinx的
    def sphinx(audio):
    	try:
    		print("-------------Sphinx successfully recognized the audio ---------")
    		return r.recognize_sphinx(audio)
    	except sr.UnknownValueError:
    		print("Sphinx could not understand audio")
    	except sr.RequestError as e:
    		print("Sphinx error; {0}".format(e))

    需要注意的是,其中sphinx的可以离线使用,需要安装sphinx包,其他的几个都要联网。谷歌的不需要注册,其他几个需要注册码

  3. 使用定义的函数识别具体的语音文件:需要注意,只能识别wav格式,如果不是,先转成wav

    from pydub import AudioSegment
    
    
    r = sr.Recognizer()
    
    
    def speech_to_text(path_file):
        #转格式
        song = AudioSegment.from_mp3(path_file)
        song.export("audio.wav", format="wav")#默认是本地路径
    
        with sr.AudioFile('audio.wav') as source:  # AudioFile 类可以通过音频文件的路径进行初始化,并提供用于读取和处理文件内容的上下文管理器界面。
    
            audio = r.record(source)  # 从音频文件中获取数据
            print(audio)
    
        print("Submitting To Speech to Text:")
        determined = sphinx(audio)  # Instead of google, you can use ibm or bing here
        print(determined)
        return  determined

     

2019-11-10 11:39:31 YT_blog 阅读数 84
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6094 人正在学习 去看看 杨波

概述

Python实现实时语音识别+控制, 录制语音指令,识别语音指令,执行语音指令(模拟web页面滚动)

详细

Python实时语音识别控制

概述

本文中的语音识别功能采用 百度语音识别库 ,首先利用 PyAudio 库录制语音指令,保存为受支持的 wav 音频文件,然后利用 百度语音识别库 提供的方法实现语音识别,最后检测识别结果,利用 PyUserInput 库提供的方法模拟控制web页面滚动。
百度语音识别为开发者提供业界优质且免费的语音服务,通过场景识别优化,为车载导航,智能家居和社交聊天等行业提供语音解决方案,准确率达到90%以上,让您的应用绘“声”绘色。

百度语音AI

准备工作

安装百度语音识别SDK
pip install baidu-aip
安装Python音频处理库 PyAudio
python -m pip install pyaudio
安装鼠标控制库 PyUserInput
pip install pyuserinput
PyUserInput 库依赖另外两个库 pywin32 和 pyHook ,需要单独安装。
安装方法可以参考下面这篇文章:Win10 Python3.5安装PyUserInput

令附文中提到的资源下载链接:lfd-pythonlibs

另外文中提到的两个包, 需要根据自己的系统和python版本来选择。

如果系统是64位的,就要选择带 amd64 的。

如果python版本为python3.7的,就要选择带 cp37 的。

比如:pywin32-223-cp37-cp37m-win_amd64.whl
pyHook-1.5.1-cp37-cp37m-win_amd64.whl

申请百度开发者帐号
参考下面链接中的文章注册百度帐号,完成开发者认证,创建应用,获取密钥
百度AI开放平台接入流程

用Pyaudio库录制音频
Pyaudio 是一个非常强大的音频处理库,简单几行代码即可实现音频播放,录制等功能.
百度语音识别API支持的语音格式有: pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式).
推荐 pcm , 采样率: 16000 固定值, 编码: 16bit , 位深: 单声道 .百度服务端会将非pcm格式, 转为pcm格式, 因此使用wav, amr会有额外的转换耗时.
为了实现实时语音识别功能, 这里通过pyaudio录制一段wav格式的音频, 报文成wav音频文件, 供后续识别时调用.

用Pyaudio库录制音频

out_file:输出音频文件名

rec_time:音频录制时间(秒)

	def audio_record(out_file, rec_time):
	    CHUNK = 1024
	    FORMAT = pyaudio.paInt16 #16bit编码格式
	    CHANNELS = 1 #单声道
	    RATE = 16000 #16000采样频率
	    p = pyaudio.PyAudio()
	    # 创建音频流 
	    stream = p.open(format=FORMAT, # 音频流wav格式
	                    channels=CHANNELS, # 单声道
	                    rate=RATE, # 采样率16000
	                    input=True,
	                    frames_per_buffer=CHUNK)
	    print("Start Recording...")
	    frames = [] # 录制的音频流
	    # 录制音频数据
	    for i in range(0, int(RATE / CHUNK * rec_time)):
	        data = stream.read(CHUNK)
	        frames.append(data)
	    # 录制完成
	    stream.stop_stream()
	    stream.close()
	    p.terminate()
	    print("Recording Done...")
	    # 保存音频文件
	    wf = wave.open(out_file, 'wb')
	    wf.setnchannels(CHANNELS)
	    wf.setsampwidth(p.get_sample_size(FORMAT))
	    wf.setframerate(RATE)
	    wf.writeframes(b''.join(frames))
	    wf.close()

调用百度语音API

读取paudio录制好的音频文件, 调用百度语音API, 设置api参数, 完成语音识别

client:AipSpeech对象

afile:音频文件

afmt:音频文件格式(wav)

def aip_get_asrresult(client, afile, afmt):
    # 选项参数:
    # cuid    String  用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内
    # dev_pid String  语言类型(见下表), 默认1537(普通话 输入法模型)
    # 识别结果已经被SDK由JSON字符串转为dict
    result = client.asr(get_file_content(afile), afmt, 16000, {"cuid": CUID, "dev_pid": DEV_PID,})
    #print(result)
    # 如果err_msg字段为"success."表示识别成功, 直接从result字段中提取识别结果, 否则表示识别失败
    if result["err_msg"] == "success.": 
        #print(result["result"])
        return result["result"]
    else:
        #print(result["err_msg"])
        return ""

dev_pid 参数列表
dev_pid 语言 模型 是否有标点 备注
1536 普通话(支持简单的英文识别) 搜索模型 无标点 支持自定义词库
1537 普通话(纯中文识别) 输入法模型 有标点 不支持自定义词库
1737 英语 有标点 不支持自定义词库
1637 粤语 有标点 不支持自定义词库
1837 四川话 有标点 不支持自定义词库
1936 普通话远场 远场模型 有标点 不支持

控制(鼠标)页面滚动

控制鼠标滚动

	def mouse_control(dir_tr):
	    MOVE_DX = 5 # 每次滚动行数
	    ms = PyMouse()
	    horizontal = 0
	    vertical = 0
	    if dir_tr.find("上") != -1: # 向上移动
	        vertical = MOVE_DX
	        #print("vertical={0}, 向上".format(vertical))
	    elif dir_tr.find("下") != -1: # 向下移动
	        vertical = 0 - MOVE_DX
	        #print("vertical={0}, 向下".format(vertical))
	    elif dir_tr.find("左") != -1: # 向左移动
	        horizontal = 0 - MOVE_DX
	        #print("horizontal={0}, 向左".format(horizontal))
	    elif dir_tr.find("右") != -1: # 向右移动
	        horizontal = MOVE_DX
	        #print("horizontal={0}, 向右".format(horizontal))
	    #print("horizontal, vertical=[{0},{1}]".format(horizontal, vertical))
	    # 通过scroll(vertical, horizontal)函数控制页面滚动
	    # 另外PyMouse还支持模拟move光标,模拟鼠标click,模拟键盘击键等
	    ms.scroll(vertical, horizontal)

完成实时语音识别控制

	while(True):
	    # 请说出语音指令,例如["向上", "向下", "向左", "向右"]
	    print("\n\n==================================================")
	    print("Please tell me the command(limit within 3 seconds):")
	    #print("Please tell me what you want to identify(limit within 10 seconds):")
	    audio_record(AUDIO_OUTPUT, 3) # 录制语音指令
	    print("Identify On Network...")
	    asr_result =  aip_get_asrresult(client, AUDIO_OUTPUT, AUDIO_FORMAT) # 识别语音指令
	    if len(asr_result) != 0: # 语音识别结果不为空,识别结果为一个list
	        print("Identify Result:", asr_result[0])
	        print("Start Control...")
	        mouse_control(asr_result[0]) # 根据识别结果控制页面滚动
	        print("Control End...")
	        if asr_result[0].find("退出") != -1: # 如果是"退出"指令则结束程序
	            break;
	        time.sleep(1) # 延时1秒

完整如下

# 用Pyaudio库录制音频
#   out_file:输出音频文件名
#   rec_time:音频录制时间(秒)
import pyaudio
import os
import wave
from aip import AipSpeech

def audio_record(out_file, rec_time):
    CHUNK = 1024
    FORMAT = pyaudio.paInt16 #16bit编码格式
    CHANNELS = 1 #单声道
    RATE = 16000 #16000采样频率
    
    p = pyaudio.PyAudio()
    # 创建音频流 
    stream = p.open(format=FORMAT, # 音频流wav格式
                    channels=CHANNELS, # 单声道
                    rate=RATE, # 采样率16000
                    input=True,
                    frames_per_buffer=CHUNK)

    print("Start Recording...")

    frames = [] # 录制的音频流
    # 录制音频数据
    for i in range(0, int(RATE / CHUNK * rec_time)):
        data = stream.read(CHUNK)
        frames.append(data)
    
    # 录制完成
    stream.stop_stream()
    stream.close()
    p.terminate()

    print("Recording Done...")

    # 保存音频文件
    wf = wave.open(out_file, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()
# 调用方法适用
audio_record("yinping.wav", 2)
#以上OK了

  
""" 你的 APPID AK SK """
APP_ID = '14557094'
API_KEY = 'dDN1wGSDm2CdNiMGhYygPiQ6'
SECRET_KEY = '2N0fyorX5yreVF5Wgq4FdlK71rh5q8uw'
#调用接口生成识别对象 
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 读取文件方法
def get_file_content(filePath):
 with open(filePath, 'rb') as fp:
  return fp.read()

# 读取paudio录制好的音频文件, 调用百度语音API, 设置api参数, 完成语音识别
#    client:AipSpeech对象
#    afile:音频文件
#    afmt:音频文件格式(wav)
def aip_get_asrresult(client, afile, afmt):
    # 选项参数:
    # cuid    String  用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内
    # dev_pid String  语言类型(见下表), 默认1537(普通话 输入法模型)
    # 识别结果已经被SDK由JSON字符串转为dict
    result = client.asr(get_file_content(afile), afmt, 16000, )
    print(result)
    # 如果err_msg字段为"success."表示识别成功, 直接从result字段中提取识别结果, 否则表示识别失败
    if result["err_msg"] == "success.": 
        print(result["result"])
        #return result["result"]
    else:
        print(result["err_msg"])
        #return ""
aip_get_asrresult(client, "yinping.wav", "wav")
2019-05-22 00:45:34 zhinengxuexi 阅读数 1294
  • C++语音识别开篇

    本篇mark老师将教大家使用第三方库的调用来简单的实现语音识别。随着机器学习和人工智能的热闹,国内语音行业也可谓是百花齐放。 语音识别一个伟大的时代已在我们身边悄悄走来。

    6094 人正在学习 去看看 杨波

随着AI快速发展的今天,语音识别也成为众多设备的标配,语音识别开始被越来越多人的关注,国外微软、苹果、谷歌,国内的科大讯飞、思必弛、云知声等厂商都在研发语音识别新策略新算法,似乎人类与语音的自然交互渐行渐近。

语音识别是以语音的研究为对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言。

语音识别系统本质上是一种模式识别系统,包括特征提取、模式匹配、参考模式库等三个基本单元。

一套完整的语音识别系统,工作过程分为7步:

1.对语音信号进行分析和处理,除去冗余信息。

2.提取影响语音识别的关键信息和表达语言含义的特征信息。

3.紧扣特征信息,用最小单元识别字词。

4.按照不同语言的各自语法,依照先后次序识别字词。

5.把前后意思当作辅助识别条件,有利于分析和识别。

6.按照语义分析,给关键信息划分段落,取出所识别出的字词并连接起来,同时根据语句意思调整句子构成。

7.结合语义,仔细分析上下文的相互联系,对当前正在处理的语句进行适当修正

语音识别、图像识别均为模式识别中的主要应用,有兴趣的可以多学习一下

人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
人工智能与语音识别技术
http://www.duozhishidai.com/article-3157-1.html
人工智能快速发展的今天,语音识别现在发展到什么阶段了?
http://www.duozhishidai.com/article-2278-1.html
语音的识别过程主要分哪几步,常用的识别方法是什么?
http://www.duozhishidai.com/article-1739-1.html


多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台

android语音识别简介

阅读数 2939

语音识别

阅读数 4954

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