Ⅰ python语音识别如何部署到移动应用
python语音识别源于 20 世纪 50 年代早期在贝尔实验室所做的研究。早期语音识别系统仅能识别单个讲话者以及只有约十几个单词的词汇量。现代语音识别系统已经取得了很大进步,可以识别多个讲话者,并且拥有识别多种语言的庞大词汇表。
语音识别的首要部分当然是语音。通过麦克风,语音便从物理声音被转换为电信号,然后通过模数转换器转换为数据。一旦被数字化,就可适用若干种模型,将音频转录为文本。
大多数现代语音识别系统都依赖于隐马尔可夫模型(HMM)。其工作原理为:语音信号在非常短的时间尺度上(比如 10 毫秒)可被近似为静止过程,即一个其统计特性不随时间变化的过程。
Ⅱ Python 在编程语言中是什么地位为什么很多大学不教 Python
python的地位很高,目前是世界第5大编程语言。。但我觉得大学不教python,其实是正确的。
Python在诞生之初,只是用来在Linux上给Perl和shell做衔接用的“胶水”,而今天已经成为了主流的编程语言,能获得今天的地位,当然具备诸多优势。。。比如数学运算相关的各种库,爬虫,等等。。。但这都不是导致Python流行的最根本原因。
有没有比Python运算更强的语言?多得是
有没有比Python爬虫效率更高的语言?也不少
所以其实平日里随口道来的种种优势,并不是不可替代的。。这些优势,很多语言都具备。就比如perl,erlang,Julia等语言,其实用来做运算或爬虫比Python更强,但为什么这些语言却流行不起来?
说到底,Python成功的秘诀只有一条,其实就是在功能基本够用的前提下,比其他语言简单。而比Python简单的语言,功能又不够全面,比如Lua,Javascript,Ruby这些语言比Python更简单,但往往只适合一两个领域的工作,而无法面面俱到。
Python可以提供的这些功能,对于非专业程序员来讲,已经显得非常强大了。。但对于专业程序员来说,Python最大的作用,其实也只是用来“偷懒”而已。因为相比JAVA或C#这种工业级的编程语言来讲,Python除了入门简单之外,并无任何优势可言。而Python的动态语言特性、不利于维护等缺点,成为了限制它迈向深层开发的重大缺陷。
而如果熟练掌握JAVA或C#中的任何一门,想利用闲暇之余学习一下Python,看几个案例便可以入门,几乎不需要专门学习。
如果你并不以成为专业程序员做为目标,那么以Python为主,是可以的。但若想靠编程养家糊口,静态语言才是重中之重。
但如果是计算机专业的话,仅仅学Python,似乎就有点对不起“科班出身”的称号了。。。。学生们花着昂贵的学费,消耗四年光阴,却只学个Python,岂不是误人子弟?
就像你若报考摄影专业,老师应该教你使用单反,而不是教你使用手机摄像头。
Ⅲ python 怎么录制系统声音不只是麦克风声音
#我可以帮你写一段代码,能够录音形成wav文件,不过要分析录音文件的波形,你可以另外找#工具,比如cooledit,也很方便。
from sys import byteorder
from array import array
from struct import pack
import pyaudio
import wave
THRESHOLD = 500
CHUNK_SIZE = 1024
FORMAT = pyaudio.paInt16
RATE = 44100
def is_silent(snd_data):
"Returns 'True' if below the 'silent' threshold"
return max(snd_data) < THRESHOLD
def normalize(snd_data):
"Average the volume out"
MAXIMUM = 16384
times = float(MAXIMUM)/max(abs(i) for i in snd_data)
r = array('h')
for i in snd_data:
r.append(int(i*times))
return r
def trim(snd_data):
"Trim the blank spots at the start and end"
def _trim(snd_data):
snd_started = False
r = array('h')
for i in snd_data:
if not snd_started and abs(i)>THRESHOLD:
snd_started = True
r.append(i)
elif snd_started:
r.append(i)
return r
# Trim to the left
snd_data = _trim(snd_data)
# Trim to the right
snd_data.reverse()
snd_data = _trim(snd_data)
snd_data.reverse()
return snd_data
def add_silence(snd_data, seconds):
"Add silence to the start and end of 'snd_data' of length 'seconds' (float)"
r = array('h', [0 for i in xrange(int(seconds*RATE))])
r.extend(snd_data)
r.extend([0 for i in xrange(int(seconds*RATE))])
return r
def record():
"""
Record a word or words from the microphone and
return the data as an array of signed shorts.
Normalizes the audio, trims silence from the
start and end, and pads with 0.5 seconds of
blank sound to make sure VLC et al can play
it without getting chopped off.
"""
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT, channels=1, rate=RATE,
input=True, output=True,
frames_per_buffer=CHUNK_SIZE)
num_silent = 0
snd_started = False
r = array('h')
while 1:
# little endian, signed short
snd_data = array('h', stream.read(CHUNK_SIZE))
if byteorder == 'big':
snd_data.byteswap()
r.extend(snd_data)
silent = is_silent(snd_data)
if silent and snd_started:
num_silent += 1
elif not silent and not snd_started:
snd_started = True
if snd_started and num_silent > 30:
break
sample_width = p.get_sample_size(FORMAT)
stream.stop_stream()
stream.close()
p.terminate()
r = normalize(r)
r = trim(r)
r = add_silence(r, 0.5)
return sample_width, r
def record_to_file(path):
"Records from the microphone and outputs the resulting data to 'path'"
sample_width, data = record()
data = pack('<' + ('h'*len(data)), *data)
wf = wave.open(path, 'wb')
wf.setnchannels(1)
wf.setsampwidth(sample_width)
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()
if __name__ == '__main__':
print("please speak a word into the microphone")
record_to_file('demo.wav')
print("done - result written to demo.wav")
Ⅳ Python语音识别,调用的是哪个客户端接口函数
调用腾讯云的语音识别(一句话识别)接口-Python版。
安装语音识别,语音识别器编码,处理Ubuntu服务器,处理WSL。
要运行我们代码的语音识别库,我们首先需要安装语音识别,然后还必须安装PyAudio。首先,我们从主包开始:sudo pip3 install SpeechRecognition安装应该遵循完全相同的格式,但我似乎缺少了让它正常工作的软件包,试图安装PyAudio会出错。这些软件包应该删除该错误。那时我不需要更新apt,但先更新它并不坏处。sudo apt-get install libasound-dev portaudio19-dev libportaudio2libportaudiocpp0有了它,您应该可以安装PyAudio:sudo pip3 install PyAudio语音识别器编码。
运行WSL(Linux版Windows子系统)的Windows机器。它也使用了Ubuntu 16.04,所以安装过程是一样的。不过说到使用麦克风,WSL并不那么简单。为了通过Ubuntu终端应用程序控制麦克风,需要安装PulseAudio。
Ⅳ Python用什么模块开发语音识别系统
推荐使用YQ5969,这个语音识别模块可以支持1--8个咪头,还可以支持本地和云端识别不同需求。5米内本地识别率 93%以上,云端识别率97%。这个语音识别模块可以滤除噪声。由于我们生活在一个相对的噪音环境里,
在远场识别中,用户和设备有一定距离,很多时候噪声源距离麦克风的位置比人更近,在某种程度中也为录制声音带来了一定的困难。
Ⅵ 用Python实现类似语音助手的功能有什么好的思路及工具库
有趣的话题,高级的思路等牛人来说。
我说一个笨思路,不断的录音片段,不断的比对波形。
已答就不要重复邀请了哇。另外你想要持续匹配必然是不断录音不断匹配,现实世界中并没有如同推送服务一样的功能,可以出现了什么声音再调用你的程序。你只能是看看如何设计优化这个匹配和录音的平衡,并且优化你的匹配速度:比方说你试试录音能否多进程(线程)?如果能双开,那么交替覆盖空白时间也是其中一种算法。
你思考一下苹果的语音助手(老版本)和安卓的语音助手,是不是都要先按一个按钮才能开始语音助手服务?说明只有持续监听才能解决问题,但是手机为了保证续航,又不能做持续监听。
后来,苹果想了个什么办法呢,他自己设计了一个芯片,其中有一个功能就是可以捕捉麦克风收听到“hey siri”就调用语音助手的功能,具体的技术细节我不太清楚,有可能是让麦克风只要收到超过多少分贝的声音就开始小范围匹配“hey siri”之类的吧
至于减噪,网上有不少关于用电脑软件调节波形文件来降噪的方法教程,虽然你不能直接用,但是提供了思路
计算声音的相似性,我个人认为可以通过计算波形的特征来完成,我个人才疏学浅,没有这方面的经验,如果是语音识别,推荐你用讯飞的api试试,讯飞在这一块技术还是蛮强的。
但是,像人类一样可以很精准的从人群中识别出熟人声音的功能,那个属于人工智能的范畴,目前研究水平还不够到可以应用的地步。
Ⅶ python实时获取麦克风输入音量
import sounddevice as sd
import numpy as np
ration = 10 # 延迟(单位秒)def print_sound(indata, outdata, frames, time, status):
volume_norm = np.linalg.norm(indata)*10
print "|" * int(volume_norm)with sd.Stream(callback=print_sound):
sd.sleep(ration * 1000)
Ⅷ 如何优雅的用Python玩转语音聊天机器人
所需硬件:
树莓派B+
人体红外线感应模块
内置麦克风摄像头(实测树莓派免驱淘宝链接)
申请API:
网络语音api
图灵api
语音聊天机器人实现原理:当有人来到跟前时--》触发聊天功能,开始以每2s检测录制语音--》通过网络语音api合成文字--》传递给图灵api返回回答信息--》通过网络语音合成播放
【人体感应识别部分Python代码renti.py】
#/usr/bin/python#coding:utf-8import RPi.GPIO as GPIOimport timeimport osimport signalimport atexitGPIO.setmode(GPIO.BCM) GPIO_PIR = 14 GPIO.setup(GPIO_PIR,GPIO.IN) # Echojing = 0dong = 0 sum = 0sum1 = 0oldren = 0sleep = 0def ganying(): i = 0 ok = 0 error = 0 while i < 10: if GPIO.input(GPIO_PIR) == 1 : ok = ok + 1 if GPIO.input(GPIO_PIR) == 0 : error = error + 1 time.sleep(0.01) i = i + 1 ren = ok/(error+1) return ren
1
GPIO_PIR = 14
为 红外线检测模块与树莓派的针脚,脚本函数返回0表示无人,>0 为有人
【Python语音识别聊天部分robot.py】
#/usr/bin/python# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding( "utf-8" )import urllibimport urllib2import jsonimport uuidimport base64import osimport timefrom renti import * #获取网络tokenappid=7647466apikey="网络API"secretkey="网络API" _url="h.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + apikey + "&client_secret=" + secretkey; y_post=urllib2.urlopen(_url)y_read=y_post.read()y_token=json.loads(y_read)['access_token']#print y_read#print y_token #------------------function------------- def luyin(): os.system('arecord -D plughw:1,0 -c 1 -d 2 1.wav -r 8000 -f S16_LE 2>/dev/null') def fanyi():
#---------------语音识别部分 mac_address="haogeoyes" with open("1.wav",'rb') as f: s_file = f.read() speech_base64=base64.b64encode(s_file).decode('utf-8') speech_length=len(s_file) data_dict = {'format':'wav', 'rate':8000, 'channel':1, 'cuid':mac_address, 'token':y_token, 'lan':'zh', 'speech':speech_base64, 'len':speech_length} json_data = json.mps(data_dict).encode('utf-8') json_length = len(json_data) asr_server = 'm/server_api' request = urllib2.Request(url=asr_server) request.add_header("Content-Type", "application/json") request.add_header("Content-Length", json_length) fs = urllib2.urlopen(url=request, data=json_data) result_str = fs.read().decode('utf-8') json_resp = json.loads(result_str) if json_resp.has_key('result'): out_txt=json_resp['result'][0] else: out_txt="Null" return out_txt def tuling(b): f=urllib.urlopen("23.com/openapi/api?key="此处为图灵API"&info=%s" % b) f=json.loads(f.read())['text'] return f def hecheng(text,y_token): #text="你好我是机器人牛牛很高兴能够认识你" geturl="u.com/text2audio?tex="+text+"&lan=zh&per=1&pit=9&spd=6&cuid=CCyo6UGf16ggKZGwGpQYL9Gx&ctp=1&tok="+y_token return os.system('omxplayer "%s" > /dev/null 2>&1 '%(geturl)) #return os.system('omxplayer "%s" > /dev/null 2>&1 '%(geturl)) def nowtime(): return time.strftime('%Y-%m-%d %H:%M:%S ') #---------------main-----------------num=0 #num用来判断是第一次说话,还是在对话过程中first=1 #判断是不是第一说话 当1000次没有人动认为是第一次while True: if ganying()!=0: run=open('run.log','a') if first==0: hecheng("你好,我是牛牛机器人,你可以和我聊天,不过说话的时候你必须靠近话筒近一点,",y_token) hecheng("说点什么吧,2秒钟内说完哦.",y_token) first=1 #为1一段时间就不执行 num=0 #从新计数 #print ganying() run.write(nowtime()+"说点神马吧..........."+'\n') print nowtime()+"说点神马吧.........." luyin() #开始录音 out=fanyi().encode("utf-8") #翻译文字 run.write(nowtime()+"我说:"+out+'\n') print nowtime()+"我说:"+out if out == "Null": text="没有听清楚你说什么" os.system('omxplayer "shenme.wav" > /dev/null 2>&1 ') else: text=tuling(out) hecheng(text,y_token) print nowtime()+"牛牛:"+text run.write(nowtime()+"牛牛:"+text+'\n') run.close() else: #print ganying() #调试查看是否为0有人没人 #print num num=num+1 #num长时间增大说明没有人在旁边 if num > 1000: first=0 #0表示第一次说话
万事俱备 运行nohup python robot.py 哈哈就可以脱离屏幕开始愉快的语音聊天啦
下面看看聊天的日志记录吧
后续更新。。。。。。Python如何用语音优雅的控制小车
Ⅸ 利用python和麦克风进行语音数据采集的流程
使用 Python 和麦克风进行语音数据采集的流程可能包括以下步骤:
安装并导入相应的库:需要安装并导入 PyAudio 库,这个库可以让你在 Python 中操作麦克风。
打开麦克风:使用 PyAudio 库打开麦克风,并设置采样率,采样位数等参数。
开始录音:使用 PyAudio 库的 read 方法从麦克风中读取语音数据。
存储数据:使用 Python 的文件操作函数将读取到的语音数据存储到本地磁盘上。
关闭麦克风:使用 PyAudio 库关闭麦克风。
处理数据:在结束采集之后可以对音频数据进行处理,比如语音识别,语音合成,语音压缩等.
注意:请确保在你的系统中已经安装好了麦克风驱动,并且在 Python 代码中有足够的权限访问麦克风。