國產(chǎn)牛B!這操作真的太愛了,御姐語音版!
哈嘍,大家好,我是月亮。一個工作n年的老程序員啦,平時喜歡研究各種有意思的小工具,每周定時分享給大家~
今天給大家分享一個國產(chǎn)的,文字和語音互轉(zhuǎn)的開源工具:PaddleSpeech。
說起文字轉(zhuǎn)語音,應(yīng)用場景還是非常多的,月亮以前工作時就遇到過處理文字轉(zhuǎn)語音的情況,當(dāng)時需要給一篇簡短的稿子進行配音工作。
一般的公司都是沒有專門的配音人員的,所以當(dāng)時這項需求可是讓產(chǎn)品經(jīng)理小小的頭疼了一下。
后來調(diào)研了某度和某大訊飛,在試聽了這幾個平臺文字轉(zhuǎn)語音的效果后,成功制作出了一段還不錯的音頻。
要是當(dāng)時研究過一些音頻技術(shù),可能處理起來就會更容易啦。
工具安裝
截止本文寫作的時間,PaddleSpeech在Github上收獲了4.6K Star,可以說是很優(yōu)秀的工具包啦~
TA可以實現(xiàn)文字轉(zhuǎn)語音、語音轉(zhuǎn)文字、語音翻譯等功能,功能支撐還是挺齊全的。
首先,安裝PaddleSpeech。
由于PaddleSpeech是依賴于paddlepaddle的,所以先安裝paddlepaddle。
本文演示使用的是Windows操作系統(tǒng),如果你是其他操作系統(tǒng),請參考paddlepaddle官網(wǎng)進行安裝。
python -m pip install paddlepaddle==2.3.1 -i https://mirror.baidu.com/pypi/simple
接著,安裝PaddleSpeech,命令如下。
pip install pytest-runner pip install paddlespeech
接著開始等待... ...
此處切換為國內(nèi)下載源,就會特別快。
注:安裝請使用python3.7,步驟、環(huán)境嚴(yán)格按照官網(wǎng)要求來執(zhí)行,否則出錯很難處理。
30秒入門體驗
文字轉(zhuǎn)語音
首先來體驗一下最基礎(chǔ)的文字轉(zhuǎn)語音,這樣咱們就可以得到一份語音文件,語音可以用于后續(xù)的其他功能的測試。
直接在python代碼中,輸入想要轉(zhuǎn)換的文字即可,代碼如下。
使用的文字為:我愛吃西紅柿。
from paddlespeech.cli.tts.infer import TTSExecutor out = TTSExecutor() out(text="我愛吃西紅柿。", output="tomato.wav")
生成了一份名為 tomato.wav 的語音文件,我試聽了一下,雖然有一些明顯的AI合成聲音的味道,但是總體效果還是不錯的。

音頻貼在下面,大家可以試聽一下。
語音轉(zhuǎn)文字
為了保證轉(zhuǎn)換正確,我這里直接使用上面生成的語音。
如果自己錄一段語音的話,肯定會有些雜音,不知道會不會影響轉(zhuǎn)換效果,用工具生成的語音肯定沒有問題。
轉(zhuǎn)換代碼如下。
from paddlespeech.cli.asr.infer import ASRExecutor asr = ASRExecutor() result = asr(audio_file="tomato.wav") print(result)
這里是轉(zhuǎn)換結(jié)果。

結(jié)果轉(zhuǎn)換非常正確,識別無誤。
如果大家想要測試更有難度的場景,可以自己錄制語音進行嘗試,比如說錄音里加一些窗外的鳴笛的嘀嘀聲,風(fēng)扇的呼呼聲...
自動添加標(biāo)點符號
除開語音和文字轉(zhuǎn)換的處理,PaddleSpeech還可以對單獨的文字進行處理。
比如下面這段缺少標(biāo)點的文字,TA能自動給識別出來應(yīng)該斷句的位置,并且給加上合適的標(biāo)點。
要我說呀那西紅柿有啥好吃的還是黑椒牛排好吃
代碼如下。
from paddlespeech.cli.text.infer import TextExecutor text_punc = TextExecutor() result = text_punc(text="要我說呀那西紅柿有啥好吃的還是黑椒牛排好吃")
不知何故,在python代碼中執(zhí)行,沒有給到正確的運行結(jié)果,所以我嘗試了一下用命令行的方式。
paddlespeech text --task punc --input "要我說呀那西紅柿有啥好吃的還是黑椒牛排好吃"
運行結(jié)果如下。
# 添加標(biāo)點的結(jié)果 要我說:呀,那西紅柿有啥好吃的?還是黑椒牛排好吃。
稍微有一點點不正確,感覺上,xx說,這個xx直接被當(dāng)作某人在說話了。
這里我換了兩個例子,重新試了一下。
校長說胸前除了?;談e別別的
校長說今天中午作業(yè)沒交的全部留下
paddlespeech text --task punc --input "校長說胸前除了校徽別別別的" paddlespeech text --task punc --input "校長說今天中午作業(yè)沒交的全部留下" # 測試結(jié)果 校長說:胸前除了?;?,別,別,別的。 校長說:今天中午,作業(yè)沒交的,全部留下。
測試結(jié)果不是特別精準(zhǔn),但是一些基本的、沒有歧義的句子,工具還是能自動識別出來的。
自動翻譯
PaddleSpeech另一個強悍的功能,在于TA可以直接將語音進行翻譯。
下面用I like eating tomatoes來演示。
翻譯成中文,應(yīng)該是:我喜歡吃西紅柿。

示例中我用兩段音頻測試,但是沒有翻譯成功。

根據(jù)官方描述,語音翻譯功能當(dāng)前只能使用Ubuntn系統(tǒng)體驗。
而我的服務(wù)器安裝的是centos系統(tǒng),這個功能就不演示了,同時官方也推薦大家使用Linux操作系統(tǒng)來使用本項目。
如果感興趣,大家可以自行嘗試PaddleSpeech更多功能。
重要提醒
在這里還是要提醒大家,一定按照官網(wǎng)要求的版本來進行環(huán)境安裝,本文中的示例,我用了整整一天才把環(huán)境問題搞定。
可以說是非常麻煩了,安裝到一半的時候,我就有預(yù)感要出問題,最后果然環(huán)境問題一個接著一個出現(xiàn)。
一般像這類耗時比較多的技術(shù)文,我都會周末一口氣寫完,這次直接消耗掉了半個周末。