【实践1】Python调用搜狗语音,自制语音识别转文字生成字幕软件,并生成会议纪录。
生活随笔
收集整理的這篇文章主要介紹了
【实践1】Python调用搜狗语音,自制语音识别转文字生成字幕软件,并生成会议纪录。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡單介紹
user的要求是不花錢就能制作一個滿足會議紀錄需要的軟件,在會議時開啟可以實時紀錄所說的每一句話,并自動生成會議紀錄。以下代碼滿足這個功能,支持使用者定制自己想要的樣式,例如軟件圖標、語音輸入界面、語音輸入背景、文字大小及顏色等。主要方法是調用搜狗輸入法中語音輸入功能包,并用Pyqt5制作呈現界面。
效果呈現
完整代碼
如果要在軟件中設置背景,現將圖片或動圖轉為py文件。以我自己的例子是插入動圖,如果是要插入背景音樂等,還請另尋方法。
import base64def pic2py(picture_name):"""將圖像文件轉換為py文件:param picture_name::return:"""open_pic = open("%s" % picture_name, 'rb')b64str = base64.b64encode(open_pic.read())open_pic.close()# 注意這邊b64str一定要加上.decode()write_data = 'img = "%s"' % b64str.decode()f = open('%s.py' % picture_name.replace('.', '_'), 'w+')f.write(write_data)f.close()if __name__ == '__main__':pics = ["picture_5.gif"]for i in pics:pic2py(i)print("ok")生成界面
import sys from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import QMainWindow, QApplication from PyQt5.QtCore import QSize, Qt from PyQt5.QtGui import * import os import base64 from PyQt5.QtWidgets import (QApplication,QLabel, QComboBox)from PyQt5.QtWidgets import QLabel from PyQt5.QtGui import QMoviefrom picture_5_gif import img as one #引入img變量,賦別名為oneclass Ui_MainWindow(QMainWindow):tmp = open('picture_5_gif', 'wb') #創建臨時的文件tmp.write(base64.b64decode(one)) ##把圖片解碼,寫入文件中tmp.close() def __init__(self ):super().__init__()self.setObjectName("self")self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) #窗口置頂#獲取顯示器分辨率self.desktop = QApplication.desktop()self.screenRect = self.desktop.screenGeometry()self.screenheight = self.screenRect.height()self.screenwidth = self.screenRect.width()# print("Screen height {}".format(self.screenheight))# print("Screen width {}".format(self.screenwidth))self.height = int(self.screenheight)self.width = int(self.screenwidth)# 獲取文件路徑,打開文件data_dir_test = "C:\Program Files (x86)\SogouInput\Components\VoiceInput"dirs = os.listdir(data_dir_test)# 輸出所有文件和文件夾for file in dirs:print(file)#拼接,因為每個人所用的輸入法版本不一樣,所以選擇讓程式去判斷,再拼接,確保軟件在每臺電腦上都能正常使用file_path = os.path.join(data_dir_test, file, 'VoiceInput.exe')# print(file_path)cmd = file_path #得到搜狗VoiceInput文件的絕對路徑a = os.startfile(cmd) self.label = QLabel(self)self.label.setFixedSize(self.width, self.height) #設置動圖背景大小1self.movie = QMovie("picture_5_gif")self.movie.setScaledSize(QSize(self.width, self.height)) #設置動圖背景大小2self.label.setMovie(self.movie)self.movie.start()# self.resize(500, 300)self.centralwidget = QtWidgets.QWidget(self)self.centralwidget.setObjectName("centralwidget")self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)self.verticalLayoutWidget.setGeometry(QtCore.QRect(0.14065*self.width, 0.2361*self.height, 0.74*self.width, 0.56*self.height)) #文本框坐標和大小# self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)self.verticalLayout.setContentsMargins(0, 0, 0, 0)self.verticalLayout.setObjectName("verticalLayout")# self.textEdit = QtWidgets.QTextEdit(self.verticalLayoutWidget) # 這里替換自己定義的 QTextViewself.textEdit = myTextEdit(self.verticalLayoutWidget) #文本框self.textEdit.setPlaceholderText("正在聆聽......") #占位文本#設置調色板self.PlaceholderText = QComboBox()pal = self.textEdit.palette()pal.setColor(QPalette.PlaceholderText, QColor('gray')) #占位文字顏色pal.setColor(QPalette.ColorRole.Text,QColor('white')) #設定文本顏色格式self.textEdit.setPalette(pal)#設置占位符字體ft = self.textEdit.font()ft.setPointSizeF(28) #占位符字號ft.setFamily('Microsoft YaHei UI') self.textEdit.setFont(ft)# self.textEdit.setFocusPolicy(Qt.StrongFocus) #設置焦點self.textEdit.setAlignment(Qt.AlignJustify) #設置兩端對齊self.textEdit.setFontFamily('Microsoft YaHei UI') #設置輸入字體self.textEdit.setFontPointSize(26) #設置輸入字號# self.textEdit.setTextColor(QColor('white')) #文本框里字體顏色(設置了文本顏色格式可以不用再次設置)self.textEdit.setStyleSheet("QTextEdit{background:transparent;border:0px}") #文本框邊框和背景透明# self.textEdit.setText(" ") #設置了則不能設置文本對齊方式self.verticalLayout.addWidget(self.textEdit)self.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(self)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 19))self.menubar.setObjectName("menubar")self.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(self)self.statusbar.setObjectName("statusbar")self.setStatusBar(self.statusbar)self.retranslateUi()QtCore.QMetaObject.connectSlotsByName(self)def retranslateUi(self):_translate = QtCore.QCoreApplication.translate#獲取顯示器分辨率self.desktop = QApplication.desktop()self.screenRect = self.desktop.screenGeometry()self.screenheight = self.screenRect.height()self.screenwidth = self.screenRect.width()self.height = int(self.screenheight)self.width = int(self.screenwidth)self.setGeometry(-1, -2, self.width, self.height) #窗口坐標和大小self.setWindowFlags(QtCore.Qt.CustomizeWindowHint) #隱藏標題欄# self.setFocusPolicy(Qt.StrongFocus) #設置焦點# self.setFocusPolicy(Qt.NoFocus) #禁掉焦點class myTextEdit(QtWidgets.QTextEdit): #繼承 原本組件def __init__(self,parent):QtWidgets.QTextEdit.__init__(self)self.parent = parent#寫入txtdef keyPressEvent(self, event):QtWidgets.QTextEdit.keyPressEvent(self,event)print('press',event)content = self.toPlainText()fw = open(r"D:\ITR.txt",mode='w+', encoding='UTF-8') #"w+"表明在下一次寫入時會把之前寫入的全部刪除再寫入,如果是需要追加或是其他功能的可以更改寫入方式。fw.write(content)fw.close() #退出軟件方式:按鍵盤左上角esc鍵退出。if (event.key())==int(16777216): def kill_exe(exe_name):os.system('taskkill /f /t /im VoiceInput.exe')#MESMTPC.exe程序名字exe_name = 'VoiceInput.exe'kill_exe(exe_name)sys.exit(app.exec_())if __name__ == "__main__":app = QApplication(sys.argv)win = Ui_MainWindow()win.show()sys.exit(app.exec_())打包成帶特定圖標的軟件
圖標必須是ico格式,可以在該網站進行轉換→ico在線生成器
win+R調出cmd界面,輸入以下代碼
直接運行可以用,不做代碼解析,有bug先百度
總結
以上是生活随笔為你收集整理的【实践1】Python调用搜狗语音,自制语音识别转文字生成字幕软件,并生成会议纪录。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TikZ从零开始(一)——实例之受力分析
- 下一篇: UG NX 12 内部草图和外部草图的区