先上圖

本程式使用的軟體:
PyCharm,Designer(PyQt5界面編輯軟體)
步驟
1.使用designer繪制出程式界面的圖
使用的控制元件:
按鍵

文本框
Line Edit

電量顯示
Priogress Bar
這里是裝飾的一個作用

布局好了以后可以自己調節各個控制元件字體的樣式,點擊你需要調整的控制元件,在designer的右邊的屬性編輯器選擇,
字體:

這里我將第一個文本顯示改成了只讀形式:

布局完成后保存到檔案夾里,是一個ui檔案,之后需要打開cmd,通過cd指令進入到ui檔案所在的檔案夾里,使用ui轉py檔案的指令,其中name是檔案的名字
pyuic5 -o name.py name.ui
之后用pycharm打開生成的py檔案,在檔案夾內新建一個main程式,實作ui與程式的分離
代碼如下,其中ty包是我生成的py檔案
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import ty
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = ty.Ui_mainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
這時運行程式可以看到界面顯示出來,
1.在main程式下定義一個錄音的函式
程式如下,dir_name是你的專案所在路徑
def rec():
dir_name = 'D:\\xun\\'
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 14400
RECORD_SECONDS = 3.5
file_name = "123.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(dir_name + file_name, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
ui.lineEdit_2.setText("我已經聽到了,請點擊處理按鍵")
錄音函式定義好以后將第一個按鍵與該函式系結起來,注意這里系結的函式不需要括號,
MainWindow.show()后加上
ui.pushButton.clicked.connect(partial(rec))
2.語音識別技術由百度AI提供網址在這
登錄以后找到控制臺,找到語音技術的模塊,創建一個新應用,之后可以看到這個新應用的AppID,API Key,Secret Key

在此圖的右下角有領取免費資源,點進去領取短語音識別,領完后大概半小時就能夠使用,
創建應用完成后,在python程式里安裝baidu-aip的包,
在main程式下定義一個函式,第7行里的是你的錄音檔案的路徑和一個讀取檔案的函式
def make():
APP_ID = '你的id'
API_KEY = '你的key'
SECRET_KEY = '你的secret key'
aipSpeech = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
q=aipSpeech.asr(get_file_content('D:\\xun\\123.wav'), 'wav', 16000, {'dev_pid': 1537,})
if q.get('result'):
ui.lineEdit_2.setText(q.get('result')[0])
fun(q)
定義讀取檔案函式
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
make()函式與第二個按鍵系結
ui.pushButton_2.clicked.connect(partial(make))
3.接下來需要一個根據處理出來的內容來判斷執行什么樣的操作的函式
其中ui.lineEdit_3.setText是文本控制元件的顯示函式,
if q.get('result')[0]=='你好,':
ui.lineEdit_3.setText("你好,很高興為您服務,")
elif q.get('result')[0]=='打開QQ,':
ui.lineEdit_3.setText("正在為您打開QQ,")
auto.open_app_qq()
elif q.get('result')[0] == '播放音樂,':
ui.lineEdit_3.setText('愛了嗎?')
auto.music()
elif q.get('result')[0] == '':
ui.lineEdit_3.setText("可能是聲音太小,")
else:
ui.lineEdit_3.setText("我還不明白你說的,")
4.這里我重新寫了個庫auto,用來存放一些功能的函式,如果要打開qq,需要找到qq的exe檔案的路徑,使用os庫的命令來打開,其他同里
import os
def open_app_qq():
dir1 = r'D:\Program Files\Tencent\QQ\Bin\QQScLauncher.exe'
os.startfile(dir1)
def music():
dir2=r'"D:\xun\music.mp3"'
os.startfile(dir4)
整體代碼如下:各個函式里面我就沒添加進來,上面都有,
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from functools import partial
import ty
from aip import AipSpeech
import pyaudio
import wave
import auto
def fun(q):
def rec():
def make():
def get_file_content(filePath):
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = ty.Ui_mainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
ui.pushButton.clicked.connect(partial(rec))
ui.pushButton_2.clicked.connect(partial(make))
sys.exit(app.exec_())
運行以后點擊啟動按鍵,對麥克風說話,給出提示后點擊處理就能執行你所說的功能了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/438061.html
標籤:AI
