本文目錄一覽:
- 1、如何用python調用百度語音識別
- 2、Python用什麼模塊開發語音識別系統
- 3、如何優雅的用Python玩轉語音聊天機械人
- 4、如何用python控制電腦說話?
- 5、python怎麼讀?
- 6、Python語音的文件輸出問題
如何用python調用百度語音識別
1、首先需要打開百度AI語音系統,開始編寫代碼,如圖所示,編寫好回車。
2、然後接下來再試一下16k.pcm的音頻,開始編寫成功回車,如圖所示的編寫。
3、最後,查看音頻c的屬性,可以看到音頻持續28秒,這樣就是用python調用百度語音識別成功解決問題。
Python用什麼模塊開發語音識別系統
shell是unix 或者linux下的腳本語言,用於linux下 的日常任務管理和開發。perl,python兩個都是跨系統的腳本語言,perl在過去多用於文本處理、linux日常任務開發,和CGI程序開發,python基本定位和perl類似,但比perl要好學很多。
如何優雅的用Python玩轉語音聊天機械人
所需硬件:
樹莓派B+
人體紅外線感應模塊
內置麥克風攝像頭(實測樹莓派免驅淘寶鏈接)
申請API:
百度語音api
圖靈api
語音聊天機械人實現原理:當有人來到跟前時–》觸發聊天功能,開始以每2s檢測錄製語音–》通過百度語音api合成文字–》傳遞給圖靈api返回回答信息–》通過百度語音合成播放
【人體感應識別部分Python代碼renti.py】
123456789101112131415161718192021222324252627282930313233
#/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】
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
#/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” baidu_url=”h.com/oauth/2.0/token?grant_type=client_credentialsclient_id=” + apikey + “client_secret=” + secretkey; y_post=urllib2.urlopen(baidu_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.dumps(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=zhper=1pit=9spd=6cuid=CCyo6UGf16ggKZGwGpQYL9Gxctp=1tok=”+y_token return os.system(‘omxplayer “%s” /dev/null 21 ‘%(geturl)) #return os.system(‘omxplayer “%s” /dev/null 21 ‘%(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 21 ‘) 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控制電腦說話?
電腦面前的你,是否也希望能讓電腦聽命於你? 當你累的時候,只需說一聲「我累了」,電腦就會放着優雅的輕音樂來讓你放鬆。 或許你希望你在百忙之中,能讓電腦郎讀最新的NBA比分賽況….一切都是那麼愜意。
在此告訴你,不要灰心,我們真的可以做一個。
做一個語音識別? 我相信很多人到這裡會有兩個心態,一是好奇,二是避之千里。
其實不然,你可以不用懂太多的編程技能,你甚至也可以不用懂自然語言處理技術,這篇文章雖然實現了語音操控但是絕沒有你們想像的那麼複雜。 如果僅僅把語音識別作為一個實現了的接口的話,剩下的邏輯就僅僅是IF-ELSE這些簡單的元素了。
實現語音操控的原理
語音操控分為 語音識別和語音朗讀兩部分。
這兩部分本來是需要自然語言處理技能相關知識以及一系列極其複雜的算法才能搞定,可是這篇文章將會跳過此處,如果你只是對算法和自然語言學感興趣的話,就只有請您移步了,下面沒有一個字會講述到這些內容。
早在上世紀90年代的時候,IBM就推出了一款極為強大的語音識別系統-vio voice , 而其後相關產品層出不窮,不斷的進化和演變着。 我們這裡將會使用SAPI實現語音模塊。
什麼是SAPI?
SAPI是微軟Speech API , 是微軟公司推出的語音接口,而細心的人會發現從WINXP開始,系統上就已經有語音識別的功能了,可是用武之地相當之少,他並沒有給出一些人性化的自定義方案,僅有的語音操控命令顯得相當雞脅。 那麼這篇文章的任務就是利用SAPI進行個性化的語音識別。
準備階段,你至少需要安裝以下的工具:
Python2.7
強烈建詭使用2.7,至今Python2.7擁有Python系列為數最多的工具和應用支持,同時也相對比較穩定。
Win32Com
Python Win32增強工具,可以使Python調用WIN32COM接口,這個工具的出現使得Python變得無比強大
Speech.py
這個是極為精簡的封裝模塊,此處為可選項,當然我不建議重複造輪子,還是下吧,目前只支持Python2.6,但不用灰心,Python2.6和Python2.7的代碼是兼容,不會有異常。
安裝過程請依至上而下的順序。
開發階段
當你安裝了上述的相關工具後,你就可以進行開發了:
先進行一個簡單的環境調試:
複製代碼 代碼如下:
whileTrue:
phrase =speech.input()
speech.say(“You said %s”%phrase)
ifphrase ==”turn off”:
break
上述代碼是啟動語音識別器,同時系統將會重複你所錄入的語音,當遇到「turn off」時,就會自動關閉識別系統。
python怎麼讀?
python的讀法:
英式發音為[‘paɪθən] ;美式發音為[‘paɪθɑːn]
發元音時,氣流從肺部通過聲門衝擊聲帶,使聲帶發出均勻震動,然後震音氣流不受阻礙地通過口腔,通過舌、唇的調節而發出不同的聲音。發元音時聲帶必然震動的叫濁元音。有些語言發元音時聲帶不振動,發出清元音。
發輔音時,氣流受到發音器官的各種阻礙,聲帶不一定振動,不夠清晰響亮的音素叫輔音。氣流從肺里出來不一定振動聲帶,通過口腔時受到一定的阻礙,這種主要依靠阻礙發出的音叫輔音。
擴展資料
相關概念——
半元音(semivowel):語音學上指摩擦似有似無,發音方式上與元音相似,介於元音和輔音之間,時長較短且被視為輔音的音。如普通話衣yī、烏wū 中的 y、w。半元音往往有對應的元音。半元音屬於近音。
流音(liquid):不屬於半元音的近音。如普通話流liú 中的 l 。
近音(approximant),即接近音、無擦通音:發音時兩個發音部位彼此靠攏,有足夠空間予氣流流動,產生的湍流較弱。(如果發音部位收窄程度加劇,湍流會產生,形成擦音。)半元音和流音都屬於近音;近音屬於輔音。
Python語音的文件輸出問題
假設輸入文件是 input.fa
輸出文件分別是 output1.fa output2.fa output3.fa 等等
則代碼如下:
f = open(‘input.fa’)
sequences = f.read().split(”)
for i,seq in enumerate(sequences[1:]):
f1 = open(‘output%d.fa’%(i+1),’w’)
f1.write(‘%s’%seq)
f1.close()
f.close()
原創文章,作者:KZIW,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/139088.html