2021SC@SDUSC
- 一、项目简介
- 二、使用技术
- 三、小组分工
- 四、数据预处理
- 4.1 概述
- 4.2 相关配置
- 4.3 具体代码
老年照护健康知识图谱平台系统是一个面向老年人,展示老年人常见疾病信息及健康护理的系统,该项目提供了文字,图片,视频,音频展示。图表展示等功能
前端:vue+element ui
后端:springboot+mybatis-plus
语言:Java
使用Maven作为项目构建工具,使用git作为项目管理工具,使用Docker容器化技术将项目部署到山东大学的云服务器上
经过小组讨论,确定项目核心代码后,我们决定在本次的小组分工中,我主要负责前后端交互以及部分前后端核心代码的阅读
四、数据预处理 4.1 概述在项目中,由于涉及大量关于疾病描述的word文档,需要在界面上使用语音的方式读出。因此需要对word文件进行预处理,将一个目录中所有word文件中的文字内容批量转换为.wav文件。本项目使用python语言+百度语音api,并设置简易操作界面,实现.docx文件转语音的功能
4.2 相关配置下载python-docx模块
pip install python-docx
便于读取docx文件
使用百度语音API:AipSpeech
4.3 具体代码from aip import AipSpeech import os import docx from tkinter import * from tkinter import filedialog import tkinter as tk import sys import threading """ 你的 APPID AK SK """ APP_ID = '你的APPID' API_KEY = '你的API_KEY' SECRET_KEY = '你的secret_key' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) # 内容转语音的方法 def change_to_mp3(content='', turn=1, wav_name='17k',filePath="",fileName=""): result = client.synthesis(content, 'zh', 1, { 'vol': 5, 'per': 0, 'spd':4 }) # 识别正确返回语音二进制 错误则返回dict 参照下面错误码 if not isinstance(result, dict): with open(filePath+'\'+ fileName +'.wav', 'wb') as f: f.write(result) # doc转wav def changeDocToWav(filepath=""): # 获取所有文件名(含后缀) filenames = os.listdir(filepath) # 获取所有文件名(不含后缀) file = [] for i in range(len(filenames)): index = filenames[i].rfind(".") file.append(filenames[i][:index]) # 循环读取所有docx文件 for i in range(len(filenames)): f = docx.document(filepath + "/" + filenames[i]) # 文件内容 content = "" for para in f.paragraphs: content += para.text + "。" # 存储为mp3文件 change_to_Wav(content=content, fileName=file[i],filePath=filepath) if i == len(filenames) - 1: tk.messagebox.showinfo('提示信息', '音频文件已转换完成!') #按下选择文件夹按钮时的操作 def select_file(): filePathVariable.set("") root = Tk() root.withdraw() # 告诉系统使用全局filepath global filepath filepath = filedialog.askdirectory(); filePathVariable.set(filepath) # 确定按钮按下时,转化为wav文件 def /confirm/iToChange(): # 创建线程 t = threading.Thread(target=changeDocToWav, args=[filepath]) # 守护 t.setDaemon(True) t.start() # 结束进程 def stopProcess(): sys.exit(0) framesT = Tk() framesT.title("请选择文件夹") screenWidth = framesT.winfo_screenwidth() screenHeight = framesT.winfo_screenheight() framesT.geometry("%dx%d+%d+%d" % (600, 150, (screenWidth-600)/2, (screenHeight-150)/2)) frame = frame(framesT) frame.pack(padx=10, pady=10) frame1 = frame(framesT) frame1.pack(padx=10,pady=10) filePathVariable=StringVar() global filepath Entry(frame,width=40,textvariable=filePathVariable).pack(fill=X,side=LEFT) Button(frame, width=20, text="选择文件夹",command=select_file).pack(fill=X,padx=10) Button(frame1, width=10, text="确定",command=/confirm/iToChange).pack(fill=X,side=LEFT) framesT.protocol("WM_DELETE_WINDOW",stopProcess) frame.mainloop()