去年的時候就嘗試過在我的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
這個音源的聲音不好聽…
這個音源的聲音不好聽,不知能不能用剪映或用微軟的音源來生成,說話比較自然。嗯,謝謝,我們同事也說還有更好的選擇,以後再換吧。🤝
嗯,謝謝,我們同事也說還有更好的選擇,以後再換吧。🤝