Skip to content

MelanieLLY/Readify

Repository files navigation

Readify - 智能网页朗读扩展

Readify 是一个 Chrome 扩展,可以将网页内容转换为语音朗读,支持多种语音和语速调节。

主要功能

🎯 核心功能

  • 智能段落合并: 自动将短段落合并到450字符以上再发送到TTS API,减少API调用次数
  • 列表识别支持: 智能识别无序列表(ul)和有序列表(ol),自动格式化列表内容
  • 播放状态管理: 通过不同颜色区分播放状态(未播放、加载中、播放中、已播放、错误)
  • 多语音支持: 支持 OpenAI TTS 的多种语音(nova, alloy, echo, fable, onyx, shimmer)
  • 语速调节: 0.5x 到 2.0x 的播放速度调节
  • 段落图标: 为每个段落和列表添加朗读图标,点击即可朗读
  • 选中文本朗读: 选中网页文字后可直接朗读

🔧 技术特性

  • 智能合并算法: 从点击的段落开始,自动合并后续段落直到达到450字符
  • 音频缓存系统: 智能缓存TTS音频,避免重复API调用
  • 状态管理: 合并的段落会同步显示播放状态
  • 错误处理: 完善的错误处理和用户提示
  • 向后兼容: 保持对单个段落朗读的支持

安装和使用

安装步骤

  1. 下载扩展文件到本地
  2. 打开 Chrome 浏览器,进入 chrome://extensions/
  3. 开启"开发者模式"
  4. 点击"加载已解压的扩展程序",选择扩展文件夹

配置设置

  1. 点击扩展图标打开设置面板
  2. 输入你的 OpenAI API Key
  3. 调整语速和语音设置
  4. 可选择是否显示段落朗读图标

使用方法

  • 整页朗读: 点击扩展图标,然后点击"朗读页面"
  • 段落朗读: 开启段落图标后,点击段落旁的喇叭图标
  • 列表朗读: 开启段落图标后,点击列表旁的喇叭图标(支持ul和ol)
  • 选中朗读: 选中文字后,点击扩展图标中的"朗读选中文字"

播放状态说明

  • 🔵 蓝色: 默认状态,未播放
  • 🟠 橙色: 加载中,正在生成音频
  • 🟢 绿色: 播放中,音频正在播放
  • 🟢 浅绿色: 已播放完成,可以重新播放
  • 🔴 红色: 错误状态,播放失败

注意: 每个段落和列表独立管理播放状态,已播放的内容会保持浅绿色标记。

段落合并功能

工作原理

当用户点击段落或列表朗读图标时,系统会:

  1. 语言检测: 自动检测文本语言(中文/日文/韩文 vs 英文/其他)
  2. 自适应目标: 根据语言设置不同的目标字符数
    • 中文/日文/韩文:200字符
    • 英文/其他语言:450字符
  3. 检查元素长度: 如果段落或列表少于目标字符数
  4. 自动合并: 从当前元素开始,逐步添加后续段落和列表
  5. 格式化处理: 列表内容会自动格式化为带编号或项目符号的文本
  6. 达到目标: 直到累计字符数达到目标或没有更多元素
  7. 统一发送: 将合并后的文本一次性发送到TTS API
  8. 状态同步: 所有被合并的元素都会显示相同的播放状态

优势

  • 减少API调用: 避免频繁的短文本API调用
  • 更好的朗读体验: 合并后的文本朗读更连贯
  • 成本优化: 减少API调用次数,降低使用成本
  • 智能处理: 自动处理不同长度的段落

示例

中文页面:
段落1 (50字符) + 段落2 (60字符) + 段落3 (90字符) = 200字符
→ 检测到中文,目标200字符
→ 合并后一次性发送到API

英文页面:
段落1 (150字符) + 列表1 (180字符) + 段落2 (120字符) = 450字符
→ 检测到英文,目标450字符
→ 合并后一次性发送到API

→ 三个元素的图标都会显示播放状态
→ 列表内容格式化为:1. 项目1 2. 项目2 或 • 项目1 • 项目2

音频缓存功能

工作原理

当用户朗读文本时,系统会:

  1. 检查缓存: 根据文本内容、语音和速度生成缓存键
  2. 缓存命中: 如果找到缓存,直接播放缓存的音频
  3. API调用: 如果没有缓存,调用TTS API生成音频
  4. 存储缓存: 将新生成的音频存储到缓存中
  5. 状态提示: 显示"使用缓存的音频"或"生成新的音频"

缓存管理

  • 智能缓存键: 基于文本内容、语音和速度生成唯一标识
  • 容量控制: 最多缓存50个音频条目,防止内存占用过多
  • 自动清理: 支持24小时自动过期和手动清理
  • 状态监控: 在插件界面实时显示缓存状态和数量

优势

  • 响应速度: 缓存的音频可以立即播放,无需等待API调用
  • 成本节省: 避免重复的API调用,减少OpenAI费用
  • 用户体验: 重复朗读同一内容时响应更快
  • 网络优化: 减少网络请求,特别是在网络较慢的情况下

缓存界面

在插件弹窗中可以查看:

  • 缓存状态:显示"空"、"已加载"或"错误"
  • 缓存条目:显示当前缓存数量(如:15/50)
  • 清空缓存:一键清空所有缓存
  • 清理过期:清理超过24小时的缓存

更新日志

v2.1.0 - 音频缓存功能

  • ✨ 新增智能音频缓存系统
  • 🚀 大幅提升重复朗读的响应速度
  • 💰 减少API调用次数,节省使用成本
  • 🎛️ 添加缓存管理界面
  • 🔧 支持缓存状态监控和清理
  • 📱 优化用户通知和状态提示

v2.4.0 - 自适应合并策略和字符计数优化

  • ✨ 新增自适应合并策略,根据语言自动调整目标字符数
  • 🔤 支持中文/日文/韩文(200字符)和英文/其他语言(450字符)
  • 📊 优化字符计数,使用Array.from()正确计算Unicode字符
  • 🎯 改进中文页面的合并效果,避免过长的文本
  • 📋 添加详细的调试日志,便于问题排查
  • 🐛 修复中文字符计数不准确的问题

v2.3.0 - 简化播放状态管理功能

  • ✨ 新增独立播放状态管理功能
  • 🎨 通过不同颜色区分播放状态
  • 🔄 每个段落和列表独立管理状态
  • 🎯 已播放内容保持浅绿色标记
  • 📋 支持状态持久化和重新播放
  • 🐛 修复复杂合并逻辑导致的状态问题

v2.2.0 - 列表识别功能

  • ✨ 新增列表识别和格式化功能
  • 📋 支持无序列表(ul)和有序列表(ol)
  • 🔄 自动格式化列表内容为可读文本
  • 🎯 改进文本元素合并算法
  • 🐛 修复高亮功能影响文本复制的问题

v2.0.0 - 段落合并功能

  • ✨ 新增智能段落合并功能
  • 🎯 自动合并短段落到450字符以上
  • 🔄 优化API调用频率
  • 🎨 改进状态管理和用户体验
  • 🐛 修复各种兼容性问题

v1.0.0 - 基础功能

  • 🎵 基础TTS朗读功能
  • 🎚️ 语速和语音调节
  • 📍 段落图标功能
  • 🎯 选中文本朗读

技术架构

文件结构

About

A Chrome extension that reads web content aloud using OpenAI’s API. Adjust font size, control reading speed, and listen to any webpage with ease.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors