Skip to content

Repository files navigation

eBookReader — 小说有声化阅读器

跨平台(Windows + Android)小说有声化阅读软件。支持 EPUB/TXT 格式,调用 OpenAI 兼容 TTS API 实时将文本转化为语音并流式播放。

Features

  • 📖 多格式支持:打开 EPUB 和 TXT 文件
  • 🔤 自动编码检测:TXT 文件自动识别 UTF-8/GBK/GB2312/GB18030/UTF-16 编码
  • 🎙️ OpenAI 兼容 TTS:支持任何兼容 OpenAI /v1/audio/speech 接口的 TTS 服务
  • 🌐 自定义主机:可填入自定义服务器 IP 地址
  • ⚙️ 自定义参数:完全可配置的请求参数(模型、音色、语速、额外参数)
  • 🔊 流式播放:单一 PCM 模式自动识别有/无 WAV 头,并支持完整 WAV/MP3 文件播放
  • ✂️ 智能断句:多种断句模式(全标点、句末标点、自定义标点、仅换行)
  • 预取管线:PCM 模式提前建立后续句子的实时响应流,不等待整句生成;深度可设为 0 以完全关闭预取
  • 📱 后台播放:Android 锁屏/后台播放,通知栏媒体控制
  • 🔦 高亮同步:播放时自动滚动并高亮当前朗读句子
  • 📚 全书连续阅读:所有章节在同一页面连续显示并自动跨章朗读
  • 🗂️ 章节侧栏:从右侧抽屉快速定位任意章节
  • 🧹 朗读文本清理:自动跳过纯标点、装饰线和不可见符号行

Getting Started

Prerequisites

  1. Flutter SDK ≥ 3.5.0:安装指南
  2. Android Studio(Android 开发)或 Visual Studio 2022(Windows 开发)

Setup & Run

# 1. 进入项目目录
cd d:\Tools\eBookReader

# 2. 调试运行(Windows)
flutter run -d windows

# 3. 调试运行(Android 需连接手机或模拟器)
flutter run -d android

🔨 编译为完整的独立 Release 应用程序

1. Windows 独立应用程序 (exe)

flutter build windows --release

编译产物目录:d:\Tools\eBookReader\build\windows\x64\runner\Release\

  • 可执行文件ebook_reader.exe
  • 使用方式:直接双击 ebook_reader.exe 即可运行;若要在其他电脑上运行,只需将整个 Release 文件夹打包复制即可。

2. Android 独立安装包 (APK)

安装 Android SDK 后运行:

flutter build apk --release

编译产物目录:build/app/outputs/flutter-apk/app-release.apk

TTS 服务配置

本应用支持任何兼容 OpenAI TTS API 的服务器,包括:

服务 说明
GPT-SoVITS 少样本语音克隆 TTS
CosyVoice 阿里通义语音合成
AllTalk TTS 多引擎 TTS 服务器
Kokoro-FastAPI 超快速轻量 TTS
IndexTTS 索引语音合成
OpenAI API OpenAI 官方 TTS

在应用设置页面中配置:

  • Host Address:TTS 服务器地址(如 http://192.168.1.100:8080
  • API Key:可选,本地部署时可留空
  • Model:模型名称(如 tts-1kokoro
  • Voice:音色名称(如 alloynova 或自定义音色)
  • Response Formatpcm(流式 PCM,自动识别 WAV 头或裸数据)/ wav / mp3
  • Prefetch Depth0(关闭预取)到 5;PCM 预取缓存的是实时流而不是完整音频

Architecture

文件选择 → 书籍解析(EPUB/TXT) → 文本断句 → TTS 预取管线
                                              ↓
                                    HTTP POST /v1/audio/speech
                                              ↓
                                    音频格式检测(WAV/PCM/MP3)
                                              ↓
                             PCM 实时块 → SoLoud / WAV、MP3 → just_audio
                                              ↓
                                    UI 高亮同步 + 自动续播下一句

Project Structure

lib/
├── main.dart                    # 入口
├── app.dart                     # MaterialApp + GoRouter
├── models/                      # 数据模型
│   ├── book_info.dart           # 书籍 + 章节模型
│   ├── tts_config.dart          # TTS API 配置
│   ├── pcm_config.dart          # PCM 音频参数
│   └── segmentation_config.dart # 断句配置
├── services/                    # 核心业务逻辑
│   ├── book_parser/             # EPUB/TXT 解析
│   ├── segmenter/               # 文本断句引擎
│   ├── tts/                     # TTS API 客户端 + 预取管线
│   ├── audio/                   # 音频引擎
│   └── storage/                 # 持久化存储
├── providers/                   # Riverpod 状态管理
├── screens/                     # 页面
│   ├── home_screen.dart         # 书架首页
│   ├── reader_screen.dart       # 阅读器(带高亮 + 播放控制)
│   └── settings_screen.dart     # 设置页面
└── widgets/                     # 可复用组件

License

MIT

About

Flutter EPUB/TXT reader with realtime OpenAI-compatible TTS streaming

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages