这些年我在 Amazon 上买了几近千本的电子书(其中相当一部分配有有声版的 Audiobook)。在 iOS(iPad/iPhone)上体验还算可以,有 Kindle App,也有 Audible App —— 唯一的缺陷是,每次换设备的时候,都得重新下载一遍,并且,Amazon 的开发人员执拗地在这么多年过后也不给加一个「全部下载」的方式…… 我甚至开始不讲道理地怀疑这帮鸟人自己的 Kindle 里都不超过十本书,所以才不把「下载全部」当回事儿。
MacOS 上一直就没有 Audible,得通过 iTunes 转手一遍,非常讨厌;而 Kindle App 就更讨厌了,一直保持着远古时代的 UI 不说,这都好多年了,坚决不给加上「如果有配套有声书的话就可以边朗读边划线阅读」的功能 —— 而这功能恰恰是 iOS 上的 Kindle App 最令人喜欢的,乃至于其它功能差一点都能因此忍受的……
MacOS Big Sur 刚推出的时候,增加了个功能,就是 iOS 的 App 可以直接安装到 MacOS 上 —— 真是太棒了!可惜,没高兴几天,苹果给了开发者一个选择,Amazon 的开发者选择的结果是,在 MacOS 上不能安装 Kindle for iOS,在 MacOS 只能接着用他们那个愚蠢到死的桌面版本 —— Kindle for Desktop 的团队就应该直接解散掉啊!一个常年只能打两颗星的产品,不应该着急一点吗?
现在在 MacOS App Store 里搜索 Kindle(iPhone & iPad Apps)不再显示 Kindle 了,搜出来的都是不相干的玩意……
于是,想到了个办法:
在 MacOS 上跑个虚拟机不就行了吗?!
结果,直接就卡在新的 Macbook 的芯片架构上,当下绝大多数流行的安卓虚拟机(emulator)都不支持 M1(Apple Silicon)芯片…… 连那些完整的虚拟机软件,VirtualBox、VMWare、Parellel Desktop 等等都做不到全面支持。
忍了好几个月,终于听说,Android Studio(Bumblebee 版本的预览版)里面的 Emulator 可以在 M1 芯片上跑了…… 于是,赶紧下载,赶紧弄。
测试过后,果真是「救命」的好家伙!
现在我可以在 MacOS 上用这样的方式看 Kindle 里的有声电子版了:
下载 Android Studio Preview 并安装好之后,打开它,需要操作的地方在一个「隐藏」的位置,More Actions > Virtual Device Manager
……
在随后的窗口中,点击左上角的 Create Device,随后看到的是一个虚拟机设置向导…… 第一步是 Select Hardware
,我选的是 Phone > Pixel XL
然后是 Select System Image
,随便选一个,关键是要用 arm64-v8a
的镜像(第一次安装的时候,可能需要下载):
向导的最后一步是进行设置。点击一下 Show Advanced Settings
按钮,里面的设置都要调整一下
这里的设置稍微多一点:
- AVD Name,最好设置的简单点,比如,我就直接用了
Pixel
这么个简单名称(一会儿会知道简单的名称会更方便);- Camera,Front 和 Back,都被我设置成了
None
,反正就是用来看 Kindle 听 Audible,摄像头肯定用不着;- Network,Speed 选择
Full
,Latency 当然是None
;- Emulated Performance 里,Graphics,选择
Hardware - GLES 2.0
;- Boot Option,我选了
Soft boot
;- 然后还要注意勾选 Multi-Core CPU;Memory and Storage 里,RAM 设置大一点,
2048 MB
;VM heap 也可以大一些;1024 MB
、Internal Storage 要更大一些,16 GB
—— 毕竟要下载很多有声书;SD card,直接选No SDCard
算了;- Device Frame,去掉 Enable Device Fram 之前的勾;
- Keyboard,必须勾选 Enable keyboard input……
然后就可以点击 Finish
按钮,完成所有设置了。
现在,Device Manger 里就有了一个虚拟机,随时可以打开…… 最后剩下一个小问题,就是每次想要开虚拟机的时候,要先打开 Android Studio Preview,然后再点击两次鼠标才能打开 Device Manager,然后还要去点那个很小的绿色「播放」按钮……
简洁点的办法是用命令行打开。在 Terminal 里执行以下命令即可:
$HOME/Library/Android/sdk/emulator/emulator @Pixel
当然,还可以在 .zshrc
里加上一个 alias
,我是这么做的:
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
alias pixel="$ANDROID_SDK_ROOT/emulator/emulator @Pixel"
至于如何往 Android 虚拟机里安装程序,我是这么做的,到 apkpure.com 下载即可:
下载到本地的 apk 文件,直接拖进 Android 虚拟机窗口就自动安装了……
有个细节就是,你得在 Android 的虚拟机设置里把 Do Not Disturb
(即,勿扰)选项打开,否则叮叮咚咚烦死你……
后来还是觉得在 Terminal 里使用命令行打开 emulator 的缺点是那个 Terminal 窗口得一直开着,很讨厌……
于是,继续折腾,Google 大法从来都不会令人失望的。然后,就找到了个办法,可以将一个 shell command 包装成一个 MacOS 可以运行的 app,用这么个叫做 appify
的脚本程序就可以了:
详细操作步骤可参见这篇文章:https://mathiasbynens.be/notes/shell-script-mac-apps
改良过后的 appify
脚本在这里:https://gist.github.com/xiaolai/dda9d5715f8ee74f079d3f449ef9b351
我的 pixel.sh 内容:
#!/bin/zsh
$HOME/Library/Android/sdk/emulator/emulator @Pixel
- Bigsur 之后,Terminal 默认 shell 是
zsh
了,而不是bash
;- 要使用 emulator 的完整路径,否则,app 无法从 Finder 中打开……
然后你就有了个看起来是独立的 App,可以随时在 Spotlight 里呼出(我是用 Alfred 替代):
大功告成。
站在工作台前的走步机上,边走边看边听,的确是我要的效果 —— 并且,又由于是在 Mac 上,随时可以打开浏览器 Google 必要的东西……
补充 1:后来找了个更好看一点的 icon,是这个
补充 2:
模拟器的时间不知道为什么与系统时间不符,需要在 Terminal 中执行以下命令:
adb shell su root "date $(date +%m%d%H%M)"
补充 3:除了安装 Android 模拟器这个方法之外,还有另外一个办法,用 Sideloadly —— 官网上的教程已经足够详细。问题在于,到哪里去找 Unsigned IPA。三个办法,1)自己越狱一个 iOS 设备,而后继续折腾;2)用 Tor-Browser 到 https://appdb.to 找;3)直接用这个两个链接下载(不保证随时更新)Kindle、Audible。
在用 Sideloadly 制作的 Kindle App 中,想要调整字体和背景颜色之前,要在设置中(打开程序后,按 ⌘ ,
,即,CMD + ,
,即可呼出设置对话框)将 Touch Alternatives
设置为 On
:
Kindle 书籍 (awz3
文件)是有 DRM 加密的(digital rights management)。但,自己购买的书,还是有办法解密并转换成 epub 格式,只不过,麻烦一点,贵一点。
首先是得购买一个 Kindle 物理设备 —— 这样你才会有一个 Serial Number
—— 在设备的设置中,或者 Amazon 的 Device Managment 页面中能够找到。
我用的是收费软件 ePubor。在它的设置中,填写你的 Kindle Device Serial Number
:
而后就可以用 Epubor 将自己购买的书籍从 awz3
文件转换为 epub
格式了;至于已购书籍文件,可以在 Amanzon 网站中的 Content Management 中下载。
收费软件 OpenAudible 可以经过 Amazon 登录授权之后,将所有已购有声书下载到本地,并将其转换成 mp3/m4a/m4b
格式。
我自己是用命令行的 pandoc 处理 epub
格式转换(比如转换成可编辑的 html),但,更多人可能需要图形界面,那就只能是 Calibre 了。
brew install --cask calibre
有了 DeepL 之后,我购书不再只限于英文了,因为任何语言的书都可以转换格式之后提交 DeepL 自动翻译,还可以写脚本处理文本渲染格式。
Whisper 是 OpenAI 推出的语音转换文字的人工智能工具包,支持很多种语言。在 github 上,有一个项目,Whisper Auto Transcribe,在本地机器上配置好 Python 环境之后,就可以用这个软件为 mp3
有声书配上 “字幕”(srt
、vtt
格式)。在我的 Macbook Air M2 上,文字转换时间大约比有声书的总时长稍微短一点,如果有条件用 GPU 加速的话,一本 14 小时的书,差不多 40 分钟就能弄完。
brew install --cask iina
在 iina 的设置里,iina → Settings → Advanced
:
- 开启
Enable advanced settings
- 勾选
Use config directory
创建 mpv 的设置文件,在 ~/.config/mpv/mpv.conf
文件中添加以下内容:
[extension.mp3]
profile-desc="profile for audiobooks"
audio-display=external-first
cover-art-auto=all
sub-auto=all
sub-align-x=left
sub-margin-x=100
sub-pos=85
sub-font-size=50
save-position-on-quit=yes
stop-screensaver=always
播放 mp3
有声书的时候,mp3
文件、srt
文件,以及一个封面图片文件放在同一个目录:
.
├── Basic Economics, Fifth Edition.mp3
├── Basic Economics, Fifth Edition.srt
└── audiobook.png
然后用 iina 打开 mp3
文件:
有用的快捷键:
-
转到上一条字幕位置:
Shift + Left
-
转到下一条字幕位置:
Shift + Right
-
音乐播放模式转换:
Option + Command + m
-
放大窗口:
Command + =
-
缩小窗口:
Command + -