<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <atom:link href="http://kitchingroup.cheme.cmu.edu/blog/feed/index.xml" rel="self" type="application/rss+xml" />
    <title>The Kitchin Research Group</title>
    <link>https://kitchingroup.cheme.cmu.edu/blog</link>
    <description>Chemical Engineering at Carnegie Mellon University</description>
    <pubDate>Sat, 01 Nov 2025 13:47:46 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    
    <item>
      <title>Spoken translations in Emacs</title>
      <link>https://kitchingroup.cheme.cmu.edu/blog/2015/07/01/Spoken-translations-in-Emacs</link>
      <pubDate>Wed, 01 Jul 2015 11:42:28 EDT</pubDate>
      <category><![CDATA[speech]]></category>
      <category><![CDATA[emacs]]></category>
      <guid isPermaLink="false">Zp8xiJg6ES3-rUVGYiL6AXNY724=</guid>
      <description>Spoken translations in Emacs</description>
      <content:encoded><![CDATA[



&lt;p&gt;
Finally, continuing our experiments with computer speech for fun, let us try a translation of text to another language that is then spoken. Here is a free translator that has the courtesy to reply with json with the translated text in it. &lt;a href="http://mymemory.translated.net/api/get?q=Hello%20World!&amp;langpair=en|de"&gt;http://mymemory.translated.net/api/get?q=Hello%20World!&amp;langpair=en|de&lt;/a&gt; I had to download a German voice called Anna, then get some translated text.
&lt;/p&gt;

&lt;p&gt;
As with previous posts, there is a video: &lt;a href="https://www.youtube.com/watch?v=8CBKnahE0ak"&gt;https://www.youtube.com/watch?v=8CBKnahE0ak&lt;/a&gt; . I am trying ScreenFlow for these (instead of Camtasia), and I still have not quite mastered the aspect ratio, so the videos still look a little odd.
&lt;/p&gt;

&lt;p&gt;
As a reminder, we have this easy way to speak text in applescript. If you are on Linux, check out &lt;a href="https://wiki.archlinux.org/index.php/Festival"&gt;Festival&lt;/a&gt; and on windows you may find some inspiration &lt;a href="http://stackoverflow.com/questions/1040655/ms-speech-from-command-line"&gt;here&lt;/a&gt; .
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-emacs-lisp"&gt;(do-applescript &lt;span style="color: #008000;"&gt;"say \"Hello. My name is John. I am glad to meet you.\""&lt;/span&gt;)
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
You can retrieve json data of the translated text, and then we can use it in our &lt;a href="http://kitchingroup.cheme.cmu.edu/blog/2015/06/29/Getting-Emacs-to-read-to-me/"&gt;word-speak&lt;/a&gt; function we previously developed. Here is an example in in German.
&lt;/p&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-emacs-lisp"&gt;(&lt;span style="color: #0000FF;"&gt;let*&lt;/span&gt; ((words-voice &lt;span style="color: #008000;"&gt;"Anna"&lt;/span&gt;)
       (text &lt;span style="color: #008000;"&gt;"Hello. My name is John. I am glad to meet you."&lt;/span&gt;)
       (url (format &lt;span style="color: #008000;"&gt;"http://mymemory.translated.net/api/get?q=%s!&amp;amp;langpair=en|de"&lt;/span&gt;
                    text))
       (json (&lt;span style="color: #0000FF;"&gt;with-current-buffer&lt;/span&gt;
                 (url-retrieve-synchronously url)
               (json-read-from-string
                (buffer-substring url-http-end-of-headers (point-max)))))
       (translated-text (cdr (assoc 'translatedText (cdr (assoc 'responseData json))))))
  (words-speak translated-text)
  translated-text)
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-emacs-lisp"&gt;&lt;span style="color: #008000;"&gt;"Hallo. Mein Name ist John. Ich freue mich, Sie kennen zu lernen.!"&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;
How about Chinese? Again, I downloaded a Chinese voice called "Ting-Ting".
&lt;/p&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-emacs-lisp"&gt;(&lt;span style="color: #0000FF;"&gt;let*&lt;/span&gt; ((words-voice &lt;span style="color: #008000;"&gt;"Ting-Ting"&lt;/span&gt;)
       (text &lt;span style="color: #008000;"&gt;"Hello. My name is John. I am glad to meet you."&lt;/span&gt;)
       (url (format &lt;span style="color: #008000;"&gt;"http://mymemory.translated.net/api/get?q=%s!&amp;amp;langpair=en|zh"&lt;/span&gt;
                    text))
       (json (&lt;span style="color: #0000FF;"&gt;with-current-buffer&lt;/span&gt;
                 (url-retrieve-synchronously url)
               (json-read-from-string
                (buffer-substring url-http-end-of-headers (point-max)))))
       (translated-text (cdr (assoc 'translatedText (cdr (assoc 'responseData json))))))
  (words-speak translated-text)
  translated-text)
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-emacs-lisp"&gt;&lt;span style="color: #008000;"&gt;"&amp;#20320;&amp;#22909;&amp;#12290;&amp;#25105;&amp;#30340;&amp;#21517;&amp;#23383;&amp;#26159;&amp;#32422;&amp;#32752;&amp;#12290;&amp;#25105;&amp;#24456;&amp;#39640;&amp;#20852;&amp;#35265;&amp;#21040;&amp;#20320;&amp;#12290;!"&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
So, can any Chinese readers and listeners confirm if the text translates correctly, and if Ting-Ting said it correctly? Hopefully it is good enough to make some sense and be useful!
&lt;/p&gt;
&lt;p&gt;Copyright (C) 2015 by John Kitchin. See the &lt;a href="/copying.html"&gt;License&lt;/a&gt; for information about copying.&lt;p&gt;&lt;p&gt;&lt;a href="/org/2015/07/01/Spoken-translations-in-Emacs.org"&gt;org-mode source&lt;/a&gt;&lt;p&gt;&lt;p&gt;Org-mode version = 8.2.10&lt;/p&gt;]]></content:encoded>
    </item>
  </channel>
</rss>
