<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>一瓶论语</title>
    <description>开源《论语》读本，传统内涵，现代价值
</description>
    <link>https://abolybook.org/</link>
    <atom:link href="https://abolybook.org/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 24 Aug 2024 03:43:26 +0000</pubDate>
    <lastBuildDate>Sat, 24 Aug 2024 03:43:26 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>《论语》TTS有声版发布啦！</title>
        <description>&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#sec1&quot;&gt;缘起&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sec2&quot;&gt;文本和音频&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sec3&quot;&gt;播放列表和字幕&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sec4&quot;&gt;已知问题&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#sec4sub1&quot;&gt;发音偏轻，长度偏短&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#sec4sub2&quot;&gt;发音偏重&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#sec4sub3&quot;&gt;字间隔偏长&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#sec4sub4&quot;&gt;句间隔偏长&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#sec4sub5&quot;&gt;连读颤音&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#sec4sub6&quot;&gt;句末短音&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#sec4sub7&quot;&gt;错读无替换&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sec5&quot;&gt;附录：字词替换表&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;sec1&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;缘起&quot;&gt;缘起&lt;/h2&gt;

&lt;p&gt;《论语》有声版？难道还不够多吗？&lt;/p&gt;

&lt;p&gt;同样的问题，它的父项目&lt;a href=&quot;https://github.com/abolybook/aboly&quot;&gt;《一瓶论语》&lt;/a&gt;在&lt;a href=&quot;https://www.abolybook.org/aboly#preface&quot;&gt;“前言”&lt;/a&gt;和&lt;a href=&quot;https://www.abolybook.org/aboly#usage&quot;&gt;“使用说明”&lt;/a&gt;里作了回应。有声版呢？还是用软件读？开玩笑吧？&lt;/p&gt;

&lt;p&gt;真人有声版《论语》的确不少，有些还提供免费下载。与它们相比，这个&lt;a href=&quot;https://github.com/abolybook/ly-tts&quot;&gt;TTS有声版&lt;/a&gt;的主要优点，一是&lt;strong&gt;中立&lt;/strong&gt;，二是&lt;strong&gt;扎实&lt;/strong&gt;，三是&lt;strong&gt;自动化&lt;/strong&gt;。至于开源项目的天然优势，比如容易及时更新，已经在《一瓶论语》里说得很详细。&lt;/p&gt;

&lt;p&gt;“TTS”是“Text to Speech”的缩写，它通过软件自动把文字内容“合成”为语音信号，直接“读”出声音或者保存成音频文件。2个多月前，我偶然被自己安卓手机上“Google文字转语音引擎”朗读中文网站文章的质量吸引，自然就想到，用它读文言文会怎样呢？有可能流畅自然地朗读《论语》吗？这种人文和一点点技术相结合的题目，总让我兴趣盎然，《论语》TTS有声版就是后来不断试验的一个小结。&lt;/p&gt;

&lt;p&gt;让人开心的是，只要不太多的辅助，Google TTS就能把2500年前的文言文读得像模像样。请试听一下：&lt;/p&gt;

&lt;audio src=&quot;https://github.com/abolybook/ly-tts/releases/download/v0.3.0d/ly-tts.mp3&quot; controls=&quot;controls&quot;&gt;
哎呀，你的浏览器不支持直接播放MP3，请试试最新版的Chrome或者Firefox浏览器吧。
&lt;/audio&gt;

&lt;p&gt;这里的辅助工作，主要是帮助TTS引擎断句，还有多音字和难字的辨析。然后，就可以把整个的“台词”交给TTS引擎自动处理了。更棒的是，安卓系统开放了&lt;a href=&quot;https://developer.android.com/reference/android/speech/tts/TextToSpeech.html&quot;&gt;TextToSpeech&lt;/a&gt;开发接口，尽管控制的范围不如我希望的丰富，但也足以按章朗读，统一合并，然后自动生成播放列表和同步字幕了。限于时间，我只用Google TTS做了试验。其它优秀的TTS引擎，比如科大讯飞，相信也会有出色的表现。&lt;/p&gt;

&lt;p&gt;显然，与真人相比，Google TTS的“播音腔”没太有感情，也缺乏变化。换一个角度想，对于《论语》来说，这正是它的独特优点。《论语》是中国传统文化的精华，每个人心中都应该为它留出方寸之地，不断咀嚼玩味，形成独立的理解。一个值得反复聆听的“标准”有声版，就应该字正腔圆，不带主观色彩，对原文一视同仁，没有分心的背景音乐。对于《论语》，这种去掉阅读者“理解”和其它修饰的朴素版，似乎更容易激发听者自身的共鸣，缩短从声音到心灵的距离，而不会一遍惊艳，两遍三遍不过尔尔，然后束之高阁，甚至有所厌弃。这就是软件朗读“中立”的意义。&lt;/p&gt;

&lt;p&gt;诚然，目前的阅读效果还有不少不太自然的地方（见后面的&lt;a href=&quot;#sec4&quot;&gt;已知问题&lt;/a&gt;）。如果你把TTS引擎当成一个刚认字的孩子，虽然还不太理解《论语》的含义，仍在努力把它读顺（而且会越来越顺！），感受就会好得多。我在这两个月里听过不下100遍，仍然兴味盎然，似乎可以作为一个佐证。&lt;/p&gt;

&lt;p&gt;这个《论语》TTS有声版，就是希望成为一个反复可听、持续改进的“标准版”。而且听得多了，总会有自己朗读一个“完美版”的创作冲动。我当然希望看到更多严谨到位的真人版不断问世。&lt;/p&gt;

&lt;p&gt;&lt;a id=&quot;sec2&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;文本和音频&quot;&gt;文本和音频&lt;/h2&gt;

&lt;p&gt;本项目的主要内容是两个文本文件：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ly.txt：从&lt;a href=&quot;https://github.com/abolybook/aboly&quot;&gt;《一瓶论语》&lt;/a&gt;自动提取的《论语》原文，作为TTS引擎“台词”文本的基础，并用来制作字幕。&lt;/li&gt;
  &lt;li&gt;ly-tts.txt：TTS引擎的“台词”文本，所有的手工修改都是在它上面进行的，最后送入TTS引擎，生成前面的音频文件。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果让TTS引擎直接朗读ly.txt，最明显的问题就是很多多音字、难字都读错了，所以要找读音确定的同音字来替换。为了不影响TTS分词的效果，应该尽量考虑所用字的词性和含义。同等条件下，选择原文没用过的字也许好一些。这个列表比较长，放在了附录的&lt;a href=&quot;#sec5&quot;&gt;字词替换表&lt;/a&gt;中。&lt;/p&gt;

&lt;p&gt;现在每个字都能正确发音了，连起来一听还是怪怪的，原因就在于断句。《论语》毕竟是2500年前的古汉语，我们现代人如果只看白文版，也很难一次读通顺，何况是对古文所知寥寥的软件呢？所以，需要选择性地插入或者删除一些标点符号，给TTS引擎足够的提示。这里占用的时间最多，需要反复修改比对。传统的“句读”（dòu）是从段落中分隔出句子（添加。？！等），从句子中分隔出“子句”（添加，；、等），这里的粒度更细，要在连读错误的“子句”内部分隔词组。古汉语的一个显著特点是单字成词，所以TTS引擎的很多先验知识就不成立了。断句的处理包括：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;删除：“ ” ‘ ’ 《 》&lt;/li&gt;
  &lt;li&gt;替换：： → ，&lt;/li&gt;
  &lt;li&gt;选择性替换：、 → ，&lt;/li&gt;
  &lt;li&gt;选择性添加：，’（短间隔，用于长难句的句读）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;举例来说，1.6章的“弟子入则孝，出则悌”，如果不在“子”、“入”之间加一个短间隔，就会把“弟子入”连读，“入”的发音既轻且短。短间隔’的停顿比顿号更短一些，是我经过试验发现的，其它的TTS引擎未必表现相同。如果TTS引擎允许在文本中直接插入描述性标记，比如间隔时间、汉语拼音、轻重，甚至语气、场景等，用起来可以更灵活。&lt;/p&gt;

&lt;p&gt;至此，用阅读软件打开ly-tts.txt，就可以调用Google TTS引擎，随点随读或者导出音频了。目前Google TTS的普通话语音数据包还只有女声一种。需要特别表扬的是，2017年12月更新的程序及其数据包比之前的效果进步明显，发音和断句更自然，读错的字也少了很多。可以预期，随着技术的演进，这个TTS版的质量也会持续提高，越来越接近“完美中立”的目标。&lt;/p&gt;

&lt;p&gt;考虑到现代文和文言文的差异，朗读前会把所有的逗号、分号替换成句号。本项目发布的ly-tts.mp3，使用了0.9倍的阅读速度，总长度是108分钟出头，或者说6496秒。一些地方听起来会显得稍赶，但我觉得，《论语》这样的经典文本，就应该听到熟极而流的程度，所以没有再作调整。大家当然可以根据自己的喜好选择阅读速度，或者进一步修改，比如整体调高音调，变成童声的效果。&lt;/p&gt;

&lt;p&gt;为了便于生成播放列表和字幕，我从每一章分别导出wav文件（&lt;a href=&quot;https://developer.android.com/reference/android/speech/tts/TextToSpeech.html#synthesizeToFile(java.lang.CharSequence, android.os.Bundle, java.io.File, java.lang.String)&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;synthesizeToFile&lt;/code&gt;&lt;/a&gt;），用&lt;a href=&quot;http://sox.sourceforge.net/&quot;&gt;sox&lt;/a&gt;在各文件末尾增加0.25秒静音后，合并成单个wav，最后用&lt;a href=&quot;https://www.ffmpeg.org/&quot;&gt;ffmpeg&lt;/a&gt;转换成mp3。对于有声书来说，32 kbps和64 kbps都是常见的选择，考虑到频繁的静音间隔，32 kbps VBR的表现我觉得已经挺好了。最后的文件体积约为25 MB。&lt;/p&gt;

&lt;p&gt;&lt;a id=&quot;sec3&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;播放列表和字幕&quot;&gt;播放列表和字幕&lt;/h2&gt;

&lt;p&gt;出于对目录的偏爱，我还制作了详细的播放列表（cue）、歌词（lrc）、字幕（srt），放在本项目附带的subtitles.zip里。它们都是从ly.txt和sox处理后的多个wav文件自动生成的，没什么稀奇之处，这里只展示一下使用效果。&lt;/p&gt;

&lt;p&gt;Windows上，我喜欢用&lt;a href=&quot;https://www.foobar2000.org/&quot;&gt;foobar2000&lt;/a&gt;播放音频。可以用它打开播放列表ly-tts.cue，并在旁边同步滚动歌词ly-tts.lrc（需要&lt;a href=&quot;https://www.foobar2000.org/components/view/foo_uie_lyrics3&quot;&gt;Lyric Show Panel 3&lt;/a&gt;插件）：&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/ly-tts-announcement/windows_foobar2000.png&quot; alt=&quot;foobar2000&quot; /&gt;&lt;/p&gt;

&lt;p&gt;foobar2000目前严格遵循“最多99首歌”的播放列表规则，所以没法打开精确到章、总共“532首歌”的ly-tts-detailed.cue。【2018-2-4更新：从v1.4 beta2起，foobar2000将cue播放列表的曲数上限提高到999。】如果用&lt;a href=&quot;https://potplayer.daum.net/&quot;&gt;PotPlayer&lt;/a&gt;，就没有这个限制，而且它既可以用ly-tts.lrc，也可以用ly-tts.srt当字幕，全屏观看的效果是很好的：&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/ly-tts-announcement/windows_potplayer.png&quot; alt=&quot;foobar2000&quot; /&gt;&lt;/p&gt;

&lt;p&gt;安卓手机上，&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.aimp.player&quot;&gt;AIMP&lt;/a&gt;支持cue播放列表，可惜还不支持同步歌词：&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/ly-tts-announcement/android_aimp.png&quot; alt=&quot;foobar2000&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad&quot;&gt;MX Player&lt;/a&gt;则支持同步字幕ly-tts.srt：&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/ly-tts-announcement/android_mxplayer.png&quot; alt=&quot;foobar2000&quot; /&gt;&lt;/p&gt;

&lt;p&gt;其它平台上，想必也有比较合理的解决方案。&lt;/p&gt;

&lt;p&gt;&lt;a id=&quot;sec4&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;已知问题&quot;&gt;已知问题&lt;/h2&gt;

&lt;p&gt;平心而论，目前这个版本的阅读效果不乏惊艳之处，但总有一些明显不够流畅自然的地方，记录在这里，希望可以在后续的程序和数据包中得到改进。&lt;/p&gt;

&lt;p&gt;&lt;a id=&quot;sec4sub1&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;发音偏轻长度偏短&quot;&gt;发音偏轻，长度偏短&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;1.14，“就有道”的“就”，应该是没有被理解为动词approach，而是副词just。相比之下，12.19的“如杀无道以就有道”，16.1的“陈力就列”，因为是连在一句内，就稍好一些。&lt;/li&gt;
  &lt;li&gt;5.7，“由也耗勇过我”的“过”，没有被理解为动词exceed，而是当成副词ever，读得偏轻偏短。另外一些“过”也有这个问题，尤其是句子结尾的“有过”，包括7.31“苟有过”，20.1“百姓有过”。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;sec4sub2&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;发音偏重&quot;&gt;发音偏重&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;8.21，“悱饮食而致孝乎鬼神，恶衣服而致美乎黻冕，卑宫室而尽力乎沟洫”的3个“乎”。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;sec4sub3&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;字间隔偏长&quot;&gt;字间隔偏长&lt;/h3&gt;

&lt;p&gt;这是“子句”内的字之间，间隔偏长的情况：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;1.13，“言可复也”，句末的“也”，没有很好地作为助词处理，在前面多加了一个小间隔。其它的例子包括4.5“是人之所欲也……是人之所悟也”，6.15“非敢后也”，7.28“智之次也”。&lt;/li&gt;
  &lt;li&gt;2.18，“干禄”，也许是“干”没有被当成动词？&lt;/li&gt;
  &lt;li&gt;3.21，“夏后氏”，没有理解“夏后”是独立的姓氏，导致“氏”之前的间隔较长。16.1“季孙之忧”的“季孙”也是这样。&lt;/li&gt;
  &lt;li&gt;7.7，“束脩”，似乎没有被当成独立的名词，两个字的间隔略长。&lt;/li&gt;
  &lt;li&gt;19.23，“室家”，“而入”。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;sec4sub4&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;句间隔偏长&quot;&gt;句间隔偏长&lt;/h3&gt;

&lt;p&gt;这是“子句”之间间隔偏长的情况，就像我们自己读文章，“一口气没接上来”：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;1.10，“夫子’温、良、恭、俭、让’以德之。夫子之求之也……”，两句的间隔比正常情况偏长。&lt;/li&gt;
  &lt;li&gt;14.18，“与文子同升诸公。子闻之”。&lt;/li&gt;
  &lt;li&gt;16.1，“而必谓之辞。丘也闻”。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;通过调整标点，一定程度上解决了其它若干处问题：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;9.10，“子见资摧者、冕衣常者’与瞽者，见之”，“见之”之前。改成“资摧者，冕衣常者，与瞽者”，则好一些。这应该是添加’的副作用。&lt;/li&gt;
  &lt;li&gt;11.26，“子路、增皙、冉有、公西华侍坐。子曰”，“子曰”之前。把人名间的顿号改为逗号，虽然拖沓了一些，但消除了这个长间隔。&lt;/li&gt;
  &lt;li&gt;12.11，“子不子，虽有粟”。把原来的顿号都改成逗号，就消除了这个长间隔。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;sec4sub5&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;连读颤音&quot;&gt;连读颤音&lt;/h3&gt;

&lt;p&gt;这种情况，大多数与w、u、o、y音有关。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;4.7，“人之过也”的“过”。其它的例子包括14.13“以告者过也”，16.1“且尔言过矣”，19.8“小人之过”，19.12“言游过矣”，19.21两处“过也”。&lt;/li&gt;
  &lt;li&gt;5.12，“加诸我也”的“我”。其它的例子包括6.9“复我”，7.11“惟我”，7.16“于我如浮云”，9.11“博我以文，约我以礼”，11.4“回也非助我者也”，11.11“非我也”，13.10“苟有用我者”，17.1“岁不我与”，17.5“召我”、“用我”。&lt;/li&gt;
  &lt;li&gt;8.6，“不可夺也”的“夺”。&lt;/li&gt;
  &lt;li&gt;11.26，“唯国以礼”的“国”。&lt;/li&gt;
  &lt;li&gt;12.10，“是惑也”的“惑”。&lt;/li&gt;
  &lt;li&gt;14.11，“则优”的“优”。&lt;/li&gt;
  &lt;li&gt;14.34，“或曰”的“或”。&lt;/li&gt;
  &lt;li&gt;16.5，两处“三乐”的“乐”，过渡不够自然。&lt;/li&gt;
  &lt;li&gt;17.20，“辞以疾”的“以”。&lt;/li&gt;
  &lt;li&gt;19.1，“丧思哀”的“哀”。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;sec4sub6&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;句末短音&quot;&gt;句末短音&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;2.4，“七十而从心所欲不逾矩”的“矩”，听起来有点像读成了jù，但换成“举”、“沮”等同音字也一样，所以并不是读错了。真人朗读经常也会这样：因为“矩”处于整章结尾，如果这个字并不特别重要，往往会结束过快，切掉靠后的音节长度，效果接近于轻声，听起来像是第4声。如果有选项控制一个字发音饱满就好了。另一个例子是3.22“邦君为两君之好”，“好”也有点像第4声。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;sec4sub7&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;错读无替换&quot;&gt;错读无替换&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;1.15，“如切如磋”的“切”读为qiè，而且没有读qiē的字可以替换。这个问题已经向Google提交了反馈，目前只得手工修改1.15导出的wav文件（唯一需要手工修改的地方）。方法是，用同样的配置朗读“正切如磋”（此时读为qiē），截取后三个字的波形，替换原来的三个字。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;sec5&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;附录字词替换表&quot;&gt;附录：字词替换表&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;说：悦&lt;/li&gt;
  &lt;li&gt;弟：悌&lt;/li&gt;
  &lt;li&gt;好：耗&lt;/li&gt;
  &lt;li&gt;鲜：显&lt;/li&gt;
  &lt;li&gt;与：欤，预&lt;/li&gt;
  &lt;li&gt;女：汝&lt;/li&gt;
  &lt;li&gt;省：醒&lt;/li&gt;
  &lt;li&gt;道：导&lt;/li&gt;
  &lt;li&gt;乘：剩&lt;/li&gt;
  &lt;li&gt;没：殁&lt;/li&gt;
  &lt;li&gt;共：拱&lt;/li&gt;
  &lt;li&gt;曾：增&lt;/li&gt;
  &lt;li&gt;知：智&lt;/li&gt;
  &lt;li&gt;阙：缺&lt;/li&gt;
  &lt;li&gt;相：象&lt;/li&gt;
  &lt;li&gt;乐：跃&lt;/li&gt;
  &lt;li&gt;宁：泞&lt;/li&gt;
  &lt;li&gt;亡：无&lt;/li&gt;
  &lt;li&gt;监：鉴&lt;/li&gt;
  &lt;li&gt;大：太&lt;/li&gt;
  &lt;li&gt;处：楚&lt;/li&gt;
  &lt;li&gt;朝：昭&lt;/li&gt;
  &lt;li&gt;放：仿&lt;/li&gt;
  &lt;li&gt;参：身&lt;/li&gt;
  &lt;li&gt;逮：待&lt;/li&gt;
  &lt;li&gt;妻：器&lt;/li&gt;
  &lt;li&gt;几：机&lt;/li&gt;
  &lt;li&gt;给：挤&lt;/li&gt;
  &lt;li&gt;斐：匪&lt;/li&gt;
  &lt;li&gt;少：邵&lt;/li&gt;
  &lt;li&gt;恶：悟，乌&lt;/li&gt;
  &lt;li&gt;孙：逊&lt;/li&gt;
  &lt;li&gt;衣：翼&lt;/li&gt;
  &lt;li&gt;澹：谭&lt;/li&gt;
  &lt;li&gt;语：遇&lt;/li&gt;
  &lt;li&gt;识：制&lt;/li&gt;
  &lt;li&gt;和：贺&lt;/li&gt;
  &lt;li&gt;校：较&lt;/li&gt;
  &lt;li&gt;间：鉴&lt;/li&gt;
  &lt;li&gt;钻：躜&lt;/li&gt;
  &lt;li&gt;予：余&lt;/li&gt;
  &lt;li&gt;贾：古&lt;/li&gt;
  &lt;li&gt;缊：愠&lt;/li&gt;
  &lt;li&gt;便：骈&lt;/li&gt;
  &lt;li&gt;躩：攫&lt;/li&gt;
  &lt;li&gt;蹜：宿&lt;/li&gt;
  &lt;li&gt;绤：细&lt;/li&gt;
  &lt;li&gt;冠：关&lt;/li&gt;
  &lt;li&gt;衰：摧&lt;/li&gt;
  &lt;li&gt;讱：韧&lt;/li&gt;
  &lt;li&gt;鞟：廓&lt;/li&gt;
  &lt;li&gt;陶：姚&lt;/li&gt;
  &lt;li&gt;乡：向&lt;/li&gt;
  &lt;li&gt;中：重&lt;/li&gt;
  &lt;li&gt;长：掌&lt;/li&gt;
  &lt;li&gt;齐：斋，资&lt;/li&gt;
  &lt;li&gt;见：现&lt;/li&gt;
  &lt;li&gt;期：基&lt;/li&gt;
  &lt;li&gt;丧：桑&lt;/li&gt;
  &lt;li&gt;夫：扶&lt;/li&gt;
  &lt;li&gt;率：帅&lt;/li&gt;
  &lt;li&gt;莫：暮&lt;/li&gt;
  &lt;li&gt;数：硕，树&lt;/li&gt;
  &lt;li&gt;柏：摆&lt;/li&gt;
  &lt;li&gt;塞：腮&lt;/li&gt;
  &lt;li&gt;得：德&lt;/li&gt;
  &lt;li&gt;小子：小紫&lt;/li&gt;
  &lt;li&gt;陈成子：陈成紫&lt;/li&gt;
  &lt;li&gt;韫：蕴&lt;/li&gt;
  &lt;li&gt;屏：禀&lt;/li&gt;
  &lt;li&gt;貉：河&lt;/li&gt;
  &lt;li&gt;裳：常&lt;/li&gt;
  &lt;li&gt;硁：坑&lt;/li&gt;
  &lt;li&gt;斗：抖&lt;/li&gt;
  &lt;li&gt;行：型，沆&lt;/li&gt;
  &lt;li&gt;占：沾&lt;/li&gt;
  &lt;li&gt;偲：思&lt;/li&gt;
  &lt;li&gt;南宫适：南宫括&lt;/li&gt;
  &lt;li&gt;裨：皮&lt;/li&gt;
  &lt;li&gt;要：邀&lt;/li&gt;
  &lt;li&gt;召：劭&lt;/li&gt;
  &lt;li&gt;被：披&lt;/li&gt;
  &lt;li&gt;发：珐&lt;/li&gt;
  &lt;li&gt;辟：避&lt;/li&gt;
  &lt;li&gt;蒉：篑&lt;/li&gt;
  &lt;li&gt;荷：赫&lt;/li&gt;
  &lt;li&gt;难：婻&lt;/li&gt;
  &lt;li&gt;陈：阵&lt;/li&gt;
  &lt;li&gt;遂：碎&lt;/li&gt;
  &lt;li&gt;卷：呟&lt;/li&gt;
  &lt;li&gt;薄：伯（Google TTS读为báo，共2处：8.3“如履薄冰”、15.15“薄责于人”。按商务版《现代汉语词典》、《现代汉语学习词典》，读bó为宜。）&lt;/li&gt;
  &lt;li&gt;归：馈&lt;/li&gt;
  &lt;li&gt;时：伺&lt;/li&gt;
  &lt;li&gt;亟：气&lt;/li&gt;
  &lt;li&gt;佛：必&lt;/li&gt;
  &lt;li&gt;沮：巨&lt;/li&gt;
  &lt;li&gt;蓧：钓&lt;/li&gt;
  &lt;li&gt;食：饲&lt;/li&gt;
  &lt;li&gt;泥：腻&lt;/li&gt;
  &lt;li&gt;更：耕&lt;/li&gt;
  &lt;li&gt;量：梁&lt;/li&gt;
  &lt;li&gt;磷：赁&lt;/li&gt;
  &lt;li&gt;曲：屈&lt;/li&gt;
  &lt;li&gt;菲：悱&lt;/li&gt;
  &lt;li&gt;侗：僮&lt;/li&gt;
  &lt;li&gt;华：花&lt;/li&gt;
  &lt;li&gt;栖：西&lt;/li&gt;
  &lt;li&gt;揭：弃&lt;/li&gt;
  &lt;li&gt;徼：焦&lt;/li&gt;
  &lt;li&gt;一：衣，宜，意&lt;/li&gt;
  &lt;li&gt;为：唯（do, be, fake, by, end-of-sentence aux.），谓（for, because, help）&lt;/li&gt;
  &lt;li&gt;有：又&lt;/li&gt;
  &lt;li&gt;杀：晒&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Sun, 31 Dec 2017 00:00:00 +0000</pubDate>
        <link>https://abolybook.org/ly-tts-announcement</link>
        <guid isPermaLink="true">https://abolybook.org/ly-tts-announcement</guid>
        
        
      </item>
    
      <item>
        <title>Web版上线啦！</title>
        <description>&lt;p&gt;排版良好的PDF比较有书的气息，可对大多数人来说，随时随地就能打开的网页显然更方便吧。&lt;/p&gt;

&lt;p&gt;Web版真是久等了！《一瓶论语》的源代码是LaTeX，直接生成的是&lt;a href=&quot;https://github.com/abolybook/aboly/releases&quot;&gt;PDF&lt;/a&gt;电子书。Web版是从LaTeX自动转换来的，除了载体不同的必要处理以外，它和PDF版的内容基本一致，只是更新得频繁一点。&lt;/p&gt;

&lt;p&gt;点击&lt;a href=&quot;https://www.abolybook.org&quot;&gt;主页&lt;/a&gt;的两张封面图片，就分别进入《一瓶论语》和《论语》白文版：&lt;/p&gt;

&lt;script&gt;
/*! Image Map Resizer (imageMapResizer.min.js ) - v0.6.2 - 2016-06-16
 *  Desc: Resize HTML imageMap to scaled image.
 *  Copyright: (c) 2016 David J. Bradshaw - dave@bradshaw.net
 *  License: MIT
 */
!function(){&quot;use strict&quot;;function a(){function a(){function a(a){function c(a){return a*b[1===(d=1-d)?&quot;width&quot;:&quot;height&quot;]}var d=0;return a.split(&quot;,&quot;).map(Number).map(c).map(Math.floor).join(&quot;,&quot;)}for(var b={width:l.width/m.width,height:l.height/m.height},c=0;j&gt;c;c++)i[c].coords=a(k[c])}function c(){var b=null,c=null;m.onload=function(){b=l.width,c=l.height,(b!==m.width||c!==m.height)&amp;&amp;a()},l.onload=function(){null!==b&amp;&amp;l.width!==b&amp;&amp;a()},m.src=l.src}function d(){function c(){clearTimeout(n),n=setTimeout(a,250)}b(l,&quot;load&quot;,a),b(window,&quot;resize&quot;,c),b(window,&quot;focus&quot;,a),b(window,&quot;readystatechange&quot;,a),b(document,&quot;fullscreenchange&quot;,a)}function e(a){return a.coords.replace(/ *, */g,&quot;,&quot;).replace(/ +/g,&quot;,&quot;)}function f(){return&quot;function&quot;==typeof h._resize}function g(){h._resize=a,i=h.getElementsByTagName(&quot;area&quot;),j=i.length,k=Array.prototype.map.call(i,e),l=document.querySelector(&apos;img[usemap=&quot;#&apos;+h.name+&apos;&quot;]&apos;),m=new Image}var h=this,i=null,j=null,k=null,l=null,m=null,n=null;f()?h._resize():(g(),d(),c())}function b(a,b,c){&quot;addEventListener&quot;in window?a.addEventListener(b,c,!1):&quot;attachEvent&quot;in window&amp;&amp;a.attachEvent(&quot;on&quot;+b,c)}function c(){function b(b){if(!b.tagName)throw new TypeError(&quot;Object is not a valid DOM element&quot;);if(&quot;MAP&quot;!==b.tagName.toUpperCase())throw new TypeError(&quot;Expected &lt;MAP&gt; tag, found &lt;&quot;+b.tagName+&quot;&gt;.&quot;);a.call(b)}return function(a){switch(typeof a){case&quot;undefined&quot;:case&quot;string&quot;:Array.prototype.forEach.call(document.querySelectorAll(a||&quot;map&quot;),b);break;case&quot;object&quot;:b(a);break;default:throw new TypeError(&quot;Unexpected data type (&quot;+typeof a+&quot;).&quot;)}}}&quot;function&quot;==typeof define&amp;&amp;define.amd?define([],c):&quot;object&quot;==typeof exports?module.exports=c():window.imageMapResize=c(),&quot;jQuery&quot;in window&amp;&amp;(jQuery.fn.imageMapResize=function(){return this.filter(&quot;map&quot;).each(a).end()})}(),function(){Array.prototype.map||(Array.prototype.map=function(a){&quot;use strict&quot;;if(void 0===this||null===this||&quot;function&quot;!=typeof a)throw new TypeError;for(var b=Object(this),c=b.length&gt;&gt;&gt;0,d=new Array(c),e=arguments.length&gt;=2?arguments[1]:void 0,f=0;c&gt;f;f++)f in b&amp;&amp;(d[f]=a.call(e,b[f],f,b));return d}),Array.prototype.forEach||(Array.prototype.forEach=function(a){&quot;use strict&quot;;if(void 0===this||null===this||&quot;function&quot;!=typeof a)throw new TypeError;for(var b=Object(this),c=b.length&gt;&gt;&gt;0,d=arguments.length&gt;=2?arguments[1]:void 0,e=0;c&gt;e;e++)e in b&amp;&amp;a.call(d,b[e],e,b)})}();

window.onload = function() {
    imageMapResize(&quot;#abolycovermap&quot;);
}
&lt;/script&gt;

&lt;div style=&quot;overflow: auto; width: 100%; margin-bottom: 1.5em;&quot;&gt;
&lt;a href=&quot;/aboly&quot; title=&quot;《一瓶论语》&quot;&gt;&lt;img src=&quot;/img/abolycover.png&quot; usemap=&quot;#abolycovermap&quot; alt=&quot;《一瓶论语》&quot; width=&quot;48%&quot; style=&quot;display: block; float: left&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;/ly&quot; title=&quot;《论语》白文版&quot;&gt;&lt;img src=&quot;/img/lycover.png&quot; alt=&quot;《论语》白文版&quot; width=&quot;48%&quot; style=&quot;display: block; float: right&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;（如果你是Windows XP用户，建议安装&lt;a href=&quot;https://www.firefox.com.cn/&quot;&gt;Firefox浏览器&lt;/a&gt;，用它看得更清爽。）&lt;/p&gt;

&lt;p&gt;[2016-7-8更新] 点击《一瓶论语》封面思维导图的节点，可以跳转到对应的主题索引。&lt;/p&gt;

&lt;p&gt;因为内容里有很多交叉引用，目前又租不起独立的服务器，所以《一瓶论语》和《论语》白文版都放在了单个页面上。《一瓶论语》的页面有1 MB之巨，幸好传输时会被压缩到300 KB左右，加载起来也不会很慢。如果是用内存较小的手机阅读，刚开始也许会有些迟钝。&lt;/p&gt;

&lt;p&gt;网页不方便像PDF那样使用很多字体，所以就改成了不同的颜色。后面还会继续改善它的设计，让尽量多的人都用得上。&lt;/p&gt;

&lt;p&gt;网页比PDF灵活很多，即使是静态页面，也可以尝试各种效果。目前优先照顾手机阅读的方便，用各种配置的设备都能大体舒适地阅读才好，所以只在顶层导航条添加了4个按钮，从左到右是：&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/web-edition/navbar.png&quot; alt=&quot;目录&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;转转&lt;/strong&gt;，随机跳到某一章，便于刷新印象。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;留言&lt;/strong&gt;，跳转到&lt;a href=&quot;/ideas&quot;&gt;留言&lt;/a&gt;区，可以在那里发表评论，参与讨论。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;目录&lt;/strong&gt;。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;设置&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;“目录”按钮显示章节标题的下拉菜单。考虑到网页浏览的便利，Web版的章节顺序作了调整，把不太重要的“前言”和“使用说明”移到“主题索引”之后：&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/web-edition/outline-menu.png&quot; alt=&quot;目录&quot; /&gt;&lt;/p&gt;

&lt;p&gt;点击菜单标题，就跳转到内文的对应位置。点击标题右边的∨形，就展开次级目录，然后可以点击∧形返回上一级：&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/web-edition/outline-submenu.png&quot; alt=&quot;次级目录&quot; /&gt;&lt;/p&gt;

&lt;p&gt;“设置”菜单里的“显示章号”，用来切换是否显示每一章右上角的序号（PDF版的章号放在每一章之外的左上角）。其它3项跳转到相应的网址。&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/web-edition/toggle-settings.png&quot; alt=&quot;目录&quot; /&gt;&lt;/p&gt;

&lt;p&gt;[2016-6-20更新] 章号也可以点击，它会在两个版本的相同章之间切换。如果只想读原文，偶尔才去看注解，或者反过来，这样会很方便。&lt;/p&gt;

&lt;p&gt;[2018-7-26更新] 为白文版增加了搜索框，可以动态过滤各章文本了。2个快捷键：s = 定位到搜索框；定位到搜索框后，Esc = 清除搜索内容。&lt;/p&gt;

&lt;p&gt;根据试验，在目前体积的页面上添加动态效果，一般配置的手机处理起来比较缓慢。所以会采取两条路线：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;今天上线的Web版，目标是在大部分智能手机上流畅地阅读（如果安装了Chrome浏览器，也许效果更好），今后也会越变越轻快。&lt;/li&gt;
  &lt;li&gt;此外还将增加一个“高配置”Web版，适合使用电脑或者高端手机、Pad阅读。它会加上我理想中当然要有、但又不得不放弃了的所有阅读便利。&lt;/li&gt;
&lt;/ul&gt;

&lt;p class=&quot;center&quot;&gt;欢迎支招，敬请期待！:blush:&lt;/p&gt;

&lt;div id=&quot;disqus_thread&quot;&gt;&lt;/div&gt;
&lt;script&gt;
var disqus_config = function () {
    this.page.url = &quot;https://www.abolybook.org/web-edition&quot;;  // Replace PAGE_URL with your page&apos;s canonical URL variable
    this.page.identifier = &quot;abolybook_web_edition&quot;; // Replace PAGE_IDENTIFIER with your page&apos;s unique identifier variable
};
(function() {  // DON&apos;T EDIT BELOW THIS LINE
    var d = document, s = d.createElement(&apos;script&apos;);
    
    s.src = &apos;//abolybook.disqus.com/embed.js&apos;;
    
    s.setAttribute(&apos;data-timestamp&apos;, +new Date());
    (d.head || d.body).appendChild(s);
})();
&lt;/script&gt;

&lt;noscript&gt;Please enable JavaScript to view the &lt;a href=&quot;https://disqus.com/?ref_noscript&quot; rel=&quot;nofollow&quot;&gt;comments powered by Disqus.&lt;/a&gt;&lt;/noscript&gt;

&lt;map name=&quot;abolycovermap&quot; id=&quot;abolycovermap&quot;&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;308,451,22&quot; href=&quot;/aboly#topiczheng4&quot; alt=&quot;政&quot; title=&quot;政&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;365,451,18&quot; href=&quot;/aboly#topiczhong1&quot; alt=&quot;忠&quot; title=&quot;忠&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;164,504,18&quot; href=&quot;/aboly#topiczhi4a&quot; alt=&quot;智&quot; title=&quot;智&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;361,351,18&quot; href=&quot;/aboly#topicshu4&quot; alt=&quot;恕&quot; title=&quot;恕&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;187,451,22&quot; href=&quot;/aboly#topicxue2&quot; alt=&quot;学&quot; title=&quot;学&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;247,390,39&quot; href=&quot;/aboly#topicjunzi&quot; alt=&quot;君子&quot; title=&quot;君子&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;308,329,22&quot; href=&quot;/aboly#topicli3&quot; alt=&quot;礼&quot; title=&quot;礼&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;348,491,18&quot; href=&quot;/aboly#topicyongren&quot; alt=&quot;贤&quot; title=&quot;贤&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;185,329,22&quot; href=&quot;/aboly#topicren2&quot; alt=&quot;仁&quot; title=&quot;仁&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;330,276,18&quot; href=&quot;/aboly#topicqian1&quot; alt=&quot;谦&quot; title=&quot;谦&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;145,369,18&quot; href=&quot;/aboly#topiczhi4&quot; alt=&quot;志&quot; title=&quot;志&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;133,472,18&quot; href=&quot;/aboly#topicyi4a&quot; alt=&quot;艺&quot; title=&quot;艺&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;348,410,18&quot; href=&quot;/aboly#topicde2&quot; alt=&quot;德&quot; title=&quot;德&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;308,508,18&quot; href=&quot;/aboly#topichui4&quot; alt=&quot;惠&quot; title=&quot;惠&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;186,272,18&quot; href=&quot;/aboly#topicyi4&quot; alt=&quot;义&quot; title=&quot;义&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;128,329,18&quot; href=&quot;/aboly#topicyou3&quot; alt=&quot;友&quot; title=&quot;友&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;227,288,18&quot; href=&quot;/aboly#topicxiao4&quot; alt=&quot;孝&quot; title=&quot;孝&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;267,491,18&quot; href=&quot;/aboly#topiclian2&quot; alt=&quot;廉&quot; title=&quot;廉&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;286,276,18&quot; href=&quot;/aboly#topicjing4&quot; alt=&quot;敬&quot; title=&quot;敬&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;133,429,18&quot; href=&quot;/aboly#topicwen2&quot; alt=&quot;文&quot; title=&quot;文&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;145,288,18&quot; href=&quot;/aboly#topicxin4&quot; alt=&quot;信&quot; title=&quot;信&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;208,504,18&quot; href=&quot;/aboly#topicheng2&quot; alt=&quot;恒&quot; title=&quot;恒&quot; /&gt;
&lt;area shape=&quot;circle&quot; coords=&quot;360,307,18&quot; href=&quot;/aboly#topicwen1&quot; alt=&quot;温&quot; title=&quot;温&quot; /&gt;
&lt;area shape=&quot;default&quot; href=&quot;/aboly&quot; alt=&quot;《一瓶论语》&quot; title=&quot;《一瓶论语》&quot; /&gt;
&lt;/map&gt;
</description>
        <pubDate>Sat, 18 Jun 2016 00:00:00 +0000</pubDate>
        <link>https://abolybook.org/web-edition</link>
        <guid isPermaLink="true">https://abolybook.org/web-edition</guid>
        
        
      </item>
    
  </channel>
</rss>
