python語音模塊
⑴ 如何優雅的用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 代碼中有足夠的許可權訪問麥克風。
⑶ 如何利用python在pycharm上進行語音合成
pycharm 通過 Sftp 遠程編輯項目的配置
{這個相當於代碼同步,類似git上傳,同步後你可以在伺服器上直接運行上傳的代碼;這個配置好後,才能在pycharm遠程調試時候將代碼上傳到伺服器正確位置/正確路徑上}
打開pycharm,File -> Settings…( Ctrl + Alt + s ) -> Deployment
點擊 + 按鈕,添加一個
如果你發現你的運行配置中沒有 Django 相關的項,請在項目設置的 Django 中勾選 Enable Django Support。
運行配置的設置有兩點需要注意。Python Interpreter 需要選中之前建立的遠程解釋器。Path mappings 處,需要把本機的 manage.py 與 linux 上的關聯起來,比如:
C:/Evolution/Python/django_website/manage.py <=> /home/onlyice/work/django_website/manage.py
這可能是 PyCharm 的 bug:在使用遠程解釋器後,PyCharm 並不會自動將 Django 運行配置中的 manage.py 文件定位到 Linux 上的那份,而是會嘗試使用下面的命令來啟動 Django 調試 Server:
/usr/bin/python2 manage.py C:/Evolution/Python/django_website/manage.py
自然就找不到文件了。所以使用了 Path mappings 作為一種 hack 手段來解決。
這時就可以打斷點調試啦
Trouble Shooting
Q: 點擊調試運行失敗,顯示 「Cant set remote tunneling」
A: 調試時 PyCharm 調用將 Python Debug Server (pydevd.py) 綁定在一個隨機埠上,再使用 SSH 的埠轉發將數據通過 SSH 埠轉到 Debug Server 去。需要檢查你的 sshd 配置 (默認是 /etc/ssh/sshd_config) 是否禁用了 TCP 轉發 (AllowTcpFowarding),這個配置默認是打開的。
皮皮blog
出錯問題
pycharm channel is not opened
pycharm不能同步deployment中設置的文件內容了,在remote host窗口中打開文件提示the file is identical to local但實際上完全不同,上傳多次才能成功,或者乾脆就提示channel is not opened。應該和sftp有關。
目前還沒找到具體原因,可能是伺服器問題,過會就自己好了。
也可能是pycharm的問題,或者系統的問題?希望解決的可以留言告知一下,謝謝!
[Can't Download From Remote Server via SFTP – JetBrains IntelliJ]
pandas出錯
pycharm console import pandas Backend Qt4Agg is interactive backend. Turning interactive mode on. : cannot connect to X server
import pandas : cannot connect to X server
重啟pycharm,或者也不知道怎麼了就好了,不報錯了。。。
運行出錯
ssh://[email protected]:22/home/piting/ENV/anaconda3/bin/python3 -u /home/piting/mine/python_workspace/Oth/Competition/TianChi/Regression.py
/home/piting/ENV/anaconda3/bin/python3: can't open file '/home/piting/mine/python_workspace/Oth/Competition/TianChi/Regression.py': [Errno 2] No such file or directory
點出remote host標簽,發現沒有這個目錄,目錄下也沒有這個文件
解決:
mkdir -p 代碼目錄
再在remote host中右鍵 》 upload here
ref: [PyCharmRemote Debugging指南]
[pycharm奇淫技巧]*
[使用Pycharm進行Python遠程開發]
[Deployment in PyCharm]
⑷ 自己動手寫Python進行文本轉語音程序,共計11行代碼
1、首模握先安裝Python程序推薦3.7
2、下載散旁 pyttsx3庫。
3、將需要轉換的文本和程序放到一起。
4、運行程序就會朗讀文本和保存文本朗讀的語沖碼橡音文件。
以下是源代碼:
import pyttsx3
with open ( 'word.txt' , encoding = 'utf-8' ) as obj:
line=obj.readline()
engine=pyttsx3.init()
rate=engine.getProperty( 'rate' )
engine.setProperty( 'rate' , 160 )
volume=engine.getProperty( 'volume' )
engine.setProperty( 'volume' , 0.6 )
engine.say(line)
engine.save_to_file(line, 'abc.mp3' )
engine.runAndWait()
⑸ Python用什麼模塊開發語音識別系統
shell是unix 或者linux下的腳本語言,用於linux下 的日常任務管理和開發。perl,python兩個都是跨系統的腳本語言,perl在過去多用於文本處理、linux日常任務開發,和CGI程序開發,python基本定位和perl類似,但比perl要好學很多。
⑹ Python用什麼模塊開發語音識別系統
推薦使用YQ5969,這個語音識別模塊可以支持1--8個咪頭,還可以支持本地和雲端識別不同需求。5米內本地識別率 93%以上,雲端識別率97%。這個語音識別模塊可以濾除雜訊。由於我們生活在一個相對的噪音環境里,
在遠場識別中,用戶和設備有一定距離,很多時候雜訊源距離麥克風的位置比人更近,在某種程度中也為錄制聲音帶來了一定的困難。
⑺ 如何用python調用百度語音識別
1、首先需要打開網路AI語音系統,開始編寫代碼,如圖所示,編寫好回車。
⑻ 如何用python控制電腦說話
電腦面前的你,是否也希望能讓電腦聽命於你? 當你累的時候,只需說一聲「我累了」,電腦就會放著優雅的輕音樂來讓你放鬆。 或許你希望你在百忙之中,能讓電腦郎讀最新的NBA比分賽況….一切都是那麼愜意。
在此告訴你,不要灰心,我們真的可以做一個。
做一個語音識別? 我相信很多人到這里會有兩個心態,一是好奇,二是避之千里。
其實不然,你可以不用懂太多的編程技能,你甚至也可以不用懂自然語言處理技術,這篇文章雖然實現了語音操控但是絕沒有你們想像的那麼復雜。 如果僅僅把語音識別作為一個實現了的介面的話,剩下的邏輯就僅僅是IF-ELSE這些簡單的元素了。
實現語音操控的原理
語音操控分為 語音識別和語音朗讀兩部分。
這兩部分本來是需要自然語言處理技能相關知識以及一系列極其復雜的演算法才能搞定,可是這篇文章將會跳過此處,如果你只是對演算法和自然語言學感興趣的話,就只有請您移步了,下面沒有一個字會講述到這些內容。
早在上世紀90年代的時候,IBM就推出了一款極為強大的語音識別系統-vio voice , 而其後相關產品層出不窮,不斷的進化和演變著。 我們這里將會使用SAPI實現語音模塊。
什麼是SAPI?
SAPI是微軟Speech API , 是微軟公司推出的語音介面,而細心的人會發現從WINXP開始,系統上就已經有語音識別的功能了,可是用武之地相當之少,他並沒有給出一些人性化的自定義方案,僅有的語音操控命令顯得相當雞脅。 那麼這篇文章的任務就是利用SAPI進行個性化的語音識別。
准備階段,你至少需要安裝以下的工具:
Python2.7 http://www.python.org/
強烈建詭使用2.7,至今Python2.7擁有Python系列為數最多的工具和應用支持,同時也相對比較穩定。
Win32Com http://starship.python.net/~skippy/win32/Downloads.html
Python Win32增強工具,可以使Python調用WIN32COM介面,這個工具的出現使得Python變得無比強大
Speech.py http://pypi.python.org/pypi/speech/
這個是極為精簡的封裝模塊,此處為可選項,當然我不建議重復造輪子,還是下吧,目前只支持Python2.6,但不用灰心,Python2.6和Python2.7的代碼是兼容,不會有異常。
安裝過程請依至上而下的順序。
開發階段
當你安裝了上述的相關工具後,你就可以進行開發了:
先進行一個簡單的環境調試:
復制代碼 代碼如下:
whileTrue:
phrase =speech.input()
speech.say("You said %s"%phrase)
ifphrase =="turn off":
break
上述代碼是啟動語音識別器,同時系統將會重復你所錄入的語音,當遇到「turn off」時,就會自動關閉識別系統。