1. 立项背景和目标
FunAudio是一个集成了语音识别(ASR)、文字转语音(TTS)和文字识别(OCR)功能的Web应用。项目旨在提供简洁友好的用户界面和强大的音频处理能力,满足用户在不同场景下的语音、文字转换需求,提高工作效率和信息获取体验。
2. 软件功能、核心功能模块的介绍
语音识别 (ASR)
- 支持实时录音识别和音频文件上传识别
- 提供多语言支持(中文、英文、日语等)
- 集成语音活动检测(VAD)技术
文字转语音 (TTS)
- 支持多种语音类型(男声、女声及多语言)
- 可调节语速、音调、音量参数
- 支持多种输出格式(wav、mp3、flac、aac)
- 提供音频预览和下载功能
文字识别 (OCR)
- 支持图片上传识别功能
- 多语言识别支持
- 文本提取和复制功能
- 边界框检测技术 3. 业务流程、功能路径描述
用户通过Web界面访问应用,可选择三大核心功能模块。以语音识别为例,用户可以选择实时录音或上传音频文件,系统进行语音转文字处理后展示结果,用户可进行复制或清除操作。文字转语音模块允许用户输入文本,选择语音类型和参数,生成并下载音频文件。文字识别模块支持图片上传,提取图片中的文字内容并展示。
1.整体架构 :采用前后端分离架构设计,实现关注点分离和模块解耦。
前端技术栈
- 框架:Vue 3
- UI组件库:Element Plus
- 构建工具:Vite
- 路由管理:Vue Router
- HTTP请求:Axios
后端技术栈
- 框架:Flask
- 跨域支持:Flask-CORS
- 文字转语音引擎:edge-tts
- 语言识别引擎:funAsr
- OCR引擎:EasyOcr
项目结构
1️⃣.前后端分离的项目结构:
- backend/ : 基于 Flask 的 Python 后端服务
- frontend/ : 基于 Vue 3 + Vite 的前端应用
- scripts/ : 项目构建和管理脚本
2️⃣.后端核心模块
- api/ : 包含三个主要功能模块的路由定义
- services/ : 实现核心业务逻辑
- schemas/ : 定义数据模型和验证规则
- example/ : 提供各功能模块的使用示例
- logs/ : 存储各模块的运行日志
3️⃣.前端核心模块
- pages/ : 包含四个主要页面组件
- api/ : 封装与后端的通信接口
- router/ : 定义应用路由
- utils/ : 提供音频录制等工具函数
4️⃣.数据流
前端通过 API 模块调用后端接口
后端通过 routes 接收请求,传递给 services 处理
2. 负责模块和结果
作为项目开发者,我负责了整个应用的开发和集成工作,包括前端界面设计与实现、后端API开发以及三大核心功能模块的集成。项目实现了预期的所有功能,能够稳定运行并满足用户需求。具体成果包括:
- 完成了三个核心功能模块的全部功能实现
- 构建了友好的用户界面和交互体验
- 实现了跨域请求支持和错误处理机制
- 提供了API接口文档和使用指南
3. 遇到的难点、坑,和解决方案
难点1:大文件处理
- 问题:大音频文件和图片文件上传和处理可能导致性能问题
- 解决方案:设置文件大小限制(音频16MB,图片10MB),并在接口规范中提出后续可考虑使用异步处理优化大文件处理逻辑
难点2:多语言支持
- 问题:需要支持多种语言的识别和转换
- 解决方案:集成多语言模型,提供语言选择功能,并设计合理的语言配置机制
难点3:响应式设计
- 问题:需要确保应用在不同设备上都有良好的显示效果
- 解决方案:采用响应式CSS设计,使用媒体查询优化小屏幕设备的显示和交互,特别是针对手机端按钮布局进行了专门优化
通过这些解决方案,成功克服了项目开发过程中的各种挑战,确保了FunAudio应用的顺利开发和稳定运行。