软件工程应用与实践(1)——项目简介,小组分工

2021SC@SDUSC

一、项目简介

老年照护健康知识图谱平台系统是一个面向老年人,展示老年人常见疾病信息及健康护理的系统,该项目提供了文字,图片,视频,音频展示。图表展示等功能
在这里插入图片描述
在这里插入图片描述

二、使用技术

前端:vue+element ui
后端:springboot+mybatis-plus
语言:Java
使用Maven作为项目构建工具,使用git作为项目管理工具,使用Docker容器化技术将项目部署到山东大学的云服务器上
由于后端使用的是微服务的技术,因此Spring Boot主要用在Spring Cloud的子项目中,利用Spring Boot快速构建微服务项目。此外,还是用了一些中间件技术,比如RabbitMQ,搜索技术Elastic Search等。

三、小组分工

经过小组讨论,确定项目核心代码后,我们决定在本次的小组分工中,我主要负责前后端交互以及部分前后端核心代码的阅读

四、数据预处理

4.1 概述

在项目中,由于涉及大量关于疾病描述的word文档,需要在界面上使用语音的方式读出。因此需要对word文件进行预处理,将一个目录中所有word文件中的文字内容批量转换为.wav文件。本项目使用python语言+百度语音api,并设置简易操作界面,实现.docx文件转语音的功能

4.2 相关配置

下载python-docx模块

pip install python-docx

便于读取docx文件

安装百度语音API:AipSpeech

pip install baidu_aip

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 confirmToChange():
    # 创建线程
    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=confirmToChange).pack(fill=X,side=LEFT)

framesT.protocol("WM_DELETE_WINDOW",stopProcess)
frame.mainloop()
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值