去年的时候就尝试过在我的MacBook上生成语音,当时参考了几篇文章,例如:
How to Record Text to Speech Using Terminal
这篇文章讲MacOS上用命令行来让电脑阅读文本,也可以输出到语音文件,例如:
say --voice=Ting-Ting "今天打麻将,我拿到一个🀄️后赢了" -o test.aiff
用这个命令行可以输出一个test.aiff音频文件。
可以有各种语言和风格的发音:
say --voice='?'
Alex en_US # Most people recognize me by my voice.
Alice it_IT # Salve, mi chiamo Alice e sono una voce italiana.
Alva sv_SE # Hej, jag heter Alva. Jag är en svensk röst.
Amelie fr_CA # Bonjour, je m’appelle Amelie. Je suis une voix canadienne.
Anna de_DE # Hallo, ich heiße Anna und ich bin eine deutsche Stimme.
Carmit he_IL # שלום. קוראים לי כרמית, ואני קול בשפה העברית.
Damayanti id_ID # Halo, nama saya Damayanti. Saya berbahasa Indonesia.
Daniel en_GB # Hello, my name is Daniel. I am a British-English voice.
Diego es_AR # Hola, me llamo Diego y soy una voz española.
Ellen nl_BE # Hallo, mijn naam is Ellen. Ik ben een Belgische stem.
Fiona en-scotland # Hello, my name is Fiona. I am a Scottish-English voice.
Fred en_US # I sure like being inside this fancy computer
Ioana ro_RO # Bună, mă cheamă Ioana . Sunt o voce românească.
Joana pt_PT # Olá, chamo-me Joana e dou voz ao português falado em Portugal.
Jorge es_ES # Hola, me llamo Jorge y soy una voz española.
Juan es_MX # Hola, me llamo Juan y soy una voz mexicana.
Kanya th_TH # สวัสดีค่ะ ดิฉันชื่อKanya
Karen en_AU # Hello, my name is Karen. I am an Australian-English voice.
Kyoko ja_JP # こんにちは、私の名前はKyokoです。日本語の音声をお届けします。
Laura sk_SK # Ahoj. Volám sa Laura . Som hlas v slovenskom jazyku.
Lekha hi_IN # नमस्कार, मेरा नाम लेखा है. मैं हिन्दी में बोलने वाली आवाज़ हूँ.
Luca it_IT # Salve, mi chiamo Luca e sono una voce italiana.
Luciana pt_BR # Olá, o meu nome é Luciana e a minha voz corresponde ao português que é falado no Brasil
Maged ar_SA # مرحبًا اسمي Maged. أنا عربي من السعودية.
Mariska hu_HU # Üdvözlöm! Mariska vagyok. Én vagyok a magyar hang.
Mei-Jia zh_TW # 您好,我叫美佳。我說國語。
Melina el_GR # Γεια σας, ονομάζομαι Melina. Είμαι μια ελληνική φωνή.
Milena ru_RU # Здравствуйте, меня зовут Milena. Я – русский голос системы.
Moira en_IE # Hello, my name is Moira. I am an Irish-English voice.
Monica es_ES # Hola, me llamo Monica y soy una voz española.
Nora nb_NO # Hei, jeg heter Nora. Jeg er en norsk stemme.
Paulina es_MX # Hola, me llamo Paulina y soy una voz mexicana.
Rishi en_IN # Hello, my name is Rishi. I am an Indian-English voice.
Samantha en_US # Hello, my name is Samantha. I am an American-English voice.
Sara da_DK # Hej, jeg hedder Sara. Jeg er en dansk stemme.
Satu fi_FI # Hei, minun nimeni on Satu. Olen suomalainen ääni.
Sin-ji zh_HK # 您好,我叫 Sin-ji。我講廣東話。
Tessa en_ZA # Hello, my name is Tessa. I am a South African-English voice.
Thomas fr_FR # Bonjour, je m’appelle Thomas. Je suis une voix française.
Ting-Ting zh_CN # 您好,我叫Ting-Ting。我讲中文普通话。
Veena en_IN # Hello, my name is Veena. I am an Indian-English voice.
Victoria en_US # Isn't it nice to have a computer that will talk to you?
Xander nl_NL # Hallo, mijn naam is Xander. Ik ben een Nederlandse stem.
Yelda tr_TR # Merhaba, benim adım Yelda. Ben Türkçe bir sesim.
Yuna ko_KR # 안녕하세요. 제 이름은 Yuna입니다. 저는 한국어 음성입니다.
Yuri ru_RU # Здравствуйте, меня зовут Yuri. Я – русский голос системы.
Zosia pl_PL # Witaj. Mam na imię Zosia, jestem głosem kobiecym dla języka polskiego.
Zuzana cs_CZ # Dobrý den, jmenuji se Zuzana. Jsem český hlas.
后来一直想利用这个say语句做批量的文本到语音转换,但搁置到现在,最近又研究了一番,终于是在一个《笔顺字典》中实际进行了,步骤是:
- 编写一个简单的php程序text-to-aiff.php,这个程序读取词典中的汉字、是否多音字、部首、笔画、笔顺等信息,生成几千个汉字对应的say语句的文件text-to-aiff.bat,例如其中一行:say "上,多音字,部首一,筆畫3,筆順:(1)豎, (2)橫, (3)橫" --voice=meijia -o 上.aiff;
- 在macOS的命令行中批量运行上面生成的批处理文件,例如:sh text-to-aiff.bat,在当前目录中生成几千个汉字对应的aiff文件,例如:上.aiff;
- 在macOS中安装ffmpeg,使用一个aiff-to-mp3.bat来进行格式转换,这个文件中内容是for i in *.aiff; do ffmpeg -i "$i" "${i%.*}.mp3"; done,也就是循环进行把aiff格式文件转换为mp3格式文件;
- 将mp3格式文件批量上传到网站的某个目录下,修改网站显示模板,把mp3的播放控制条嵌入网站html中:🔉 筆順播報:<audio src="https://bishun.18dao.net/4808mp3/%E6%B4%97.mp3" controls="controls" title="“洗”字筆順播報">
您的浏览器不支持 audio 标签。
</audio>。
例子页面:洗字的笔顺,截图如下:
注意几点:
- “11 折”会被macOS读成“一一 折”,需要打个括号“(11) 折”才会被读成正确的“十一 折”
- 如果需要调整读音中的间隔、音量变化等,可以嵌入一些控制字符,参考这篇Techniques for Customizing Synthesized Speech
- macOS中安装ffmpeg我是先安装了一个包管理软件homebrew,然后再安装ffmpeg的,参考这篇Installing FFmpeg on Mac
如果能在自动播放、手动播放和练习模式的时候也控制发出声音就好了,这主要看用js是否可以实现画某一笔时能否控制播放对应的笔画音频,后面请同事来摸索。
评论2
这个音源的声音不好听…
这个音源的声音不好听,不知能不能用剪映或用微软的音源来生成,说话比较自然。嗯,谢谢,我们同事也说还有更好的选择,以后再换吧。🤝
嗯,谢谢,我们同事也说还有更好的选择,以后再换吧。🤝