惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
L
LangChain Blog
Jina AI
Jina AI
博客园 - 叶小钗
B
Blog RSS Feed
Recent Announcements
Recent Announcements
H
Help Net Security
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
B
Blog
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
罗磊的独立博客

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
实现听书的自由 - 少数派
2024-06-28 · via 少数派

现在纵观app商店已经有很多的听书类软件了,但局限就是可以选择的书籍都是指定的,或者要等主播更新平台上架。对于有时想回顾一些经典读物,比如最近上映电影《沙丘2》后想听听原著就有些犯难了。本文提供一种可以实现高度自由听书的方式,不涉及书籍版权及来源。

  提醒:本人使用的是Mac的系统,身边没有Win系统,所以教程均是在MacOS上举例。

  为了方便初步接触的朋友可以上手,接下来会逐步分享。

  • 首先我们需要在github找到 epub_to_audiobook 这个项目,打开一个终端窗口,使用git clone的方式进行下载。
epub_to_audiobook
git clone https://github.com/p0n1/epub_to_audiobook.git
  • 然后进入finder找到下载的文件夹,右键菜单-服务-新建位于文件夹位置的终端窗口
  • 创建虚拟环境,防止影响机器本地的环境,相当于做了一层隔离。在创建之前需要先确保安装了python3,具体怎么安装我们不在篇文章中涉及。
python3 -m venv venv
  • 激活虚拟环境
source venv/bin/activate
  • 在激活的虚拟环境中安装需要的组件。以下命令会参照requirements.txt这个文件中列出的依赖进行依次安装
pip install -r requirements.txt

  至此我们的本地安装完成,接下来就是使用的环节。


  • 需要转换语音的epub书籍放入指定文件夹:examples,并提前创建一个需要输出的文件夹,此处我以《银河系搭车客指南》为例。
examples文件夹输出,自创建文件夹输出

  这个程序可以调用3种方式进行语音转换:OpenAI、AZure、Edge。前两种需要使用API,并且是需要付费的,所以我们此处讨论的第三种:Edge。

  本质上调用了Edge浏览器的语音朗读功能,所有它支持的音色都可以调用,关键是:免费!稳定!

  接下来我们要举例的前提是我们已经在<examples>文件夹种放入了《银河系搭车客指南》这本书,然后已经创建好对应的文件夹,当然文件夹的名称随意,只是接下来命令中做好对应就好即可。


  • 继续在原先的命令窗口中输入指令运行:
python3 main.py /Users/jeff/epub_to_audiobook/examples/银河系搭车客指南5部曲.epub /Users/jeff/epub_to_audiobook/银河系搭车客指南 --tts edge --language zh-CN --voice_name "zh-CN-XiaoxiaoNeural" --chapter_start 1 --chapter_end 203 --break_duration 1000

  对于以上命令解释下:

/Users/jeff/epub_to_audiobook/examples/银河系搭车客指南5部曲.epub读取的书籍
/Users/jeff/epub_to_audiobook/银河系搭车客指南输出的目录
--voice_name "zh-CN-XiaoxiaoNeural"调用的音色
--chapter_start 1 --chapter_end 203开始到结束的章节
--break_duration 1000段落之间间隔多少毫秒
  • 输出的文件
已经按照章节分好

  • 避坑
    • 转换出来的音频都只有3KB,无法播放:这是因为原先的代码有问题,需要打开edge_tts_provider.py,替换以下代码,重新运行即可。
    async def save(
        self,
        audio_fname: Union[str, bytes],
        metadata_fname: Optional[Union[str, bytes]] = None,
    ) -> None:
        # Save the audio and metadata to the specified files.
        await self.chunkify()
        await super().save(audio_fname, metadata_fname)

        audio: AudioSegment = AudioSegment.from_file(audio_fname)
        audio.export(audio_fname)
  • 以上是需要替换的代码,找到相似的这段直接替换保存退出即可。