700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【实践1】Python调用搜狗语音 自制语音识别转文字生成字幕软件 并生成会议纪录。

【实践1】Python调用搜狗语音 自制语音识别转文字生成字幕软件 并生成会议纪录。

时间:2021-12-21 13:34:10

相关推荐

【实践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 sysfrom PyQt5 import QtCore, QtWidgetsfrom PyQt5.QtWidgets import QMainWindow, QApplicationfrom PyQt5.QtCore import QSize, Qtfrom PyQt5.QtGui import *import osimport base64from PyQt5.QtWidgets import (QApplication,QLabel, QComboBox)from PyQt5.QtWidgets import QLabelfrom 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界面,输入以下代码

pyinstaller -F -w -i D:\tubiao.ico main.py

直接运行可以用,不做代码解析,有bug先百度

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。