免責聲明:這不是官方的Google產品。
語音構建器是一種開放源文本到語音(TTS)語音構建工具,專注於簡單,靈活性和協作。我們的工具允許任何具有基本計算機技能的人進行語音訓練實驗並聆聽由此產生的合成聲音。
我們希望該工具通過使實驗更快和跨學科的協作更加容易,從而減少創造新聲音和加速TTS研究的障礙。我們認為,我們的工具可以幫助改善TTS研究,尤其是對於低資源的語言,在這些語言中,通常需要進行更多的實驗來充分利用有限的數據。
出版物-https://ai.google/research/pubs/pub46977
在Google Cloud平台(GCP)上創建一個項目。
如果您還沒有帳戶,請自己創建一個。
啟用帳單並要求您的項目更多配額
安裝Docker
訪問firebase.com並將項目導入到firebase平台
如果您還沒有帳戶,請自己創建一個。
通過安裝雲SDK安裝GCLOUD CMD線工具
安裝node.js
安裝Firebase CMD線工具
啟用以下所有GCP服務:
使用此URL一次啟用它們。
通常,啟用API和GCP將需要幾分鐘的時間將您帶到另一個頁面以設置這些憑據。請跳過並關閉頁面,因為我們不需要任何新的憑據設置。
[可選]設置自己的自定義數據出口商
如果您尚未完成所有先決條件,請在以下步驟進一步之前進行。
通過以下方式克隆該項目到您當前的目錄
git clone https://github.com/google/voice-builder.git && cd voice-builder
如果您尚未通過GCLOUD登錄您的帳戶,請登錄:
gcloud auth login
另外,如果您尚未通過Firebase登錄您的帳戶,請登錄:
firebase login --no-localhost
打開deploy.sh並編輯以下變量:
創建用於語音構建器的GCS存儲器來存儲每個工作數據
./deploy.sh initial_setup
部署雲功能組件
./deploy.sh cloud_functions
部署UI組件
./deploy.sh ui create
部署後,您應該獲得一個可以從命令行的結果訪問的IP(external_ip)。您可以在瀏覽器中訪問http:// external_ip:3389來訪問語音構建器實例。
在此步驟中,您應該擁有所有組件,並且可以在http:// external_ip:3389上訪問UI。 VoiceBuilder最初為您提供了兩個示例TTS引擎(節日和Merlin),以及來自語言資源回購的公共數據。
您可以通過使用我們提供的節日引擎創建新的聲音來測試一切是否正常工作:
數據出口商是您可以添加到系統的另一個附加組件。通常,語音構建器可以在沒有數據出口商的情況下工作。沒有它,語音構建器只會按原樣使用輸入文件。
但是,在某些情況下,您需要在將輸入文件饋送到TTS算法之前對輸入文件進行一些轉換。例如:
語音構建器使您可以靈活地添加自己的數據導出器,在運行實際的TTS算法之前,您可以使用該數據出口商來操縱數據。您的自定義數據出口商將獲得包含文件位置,選擇的TTS算法,調諧參數等的語音規範。您可以使用這些信息來操縱/轉換數據。最後,您的數據出口商應將所有必要的文件放入指定的工作文件夾中,以觸發實際的TTS算法運行。
首先,您需要讓數據出口商訪問GCS存儲桶。
打開 /deploy.sh並編輯以下變量:
運行命令提供data_exporter_service_account ACL訪問GCS桶
./deploy.sh acl_for_data_exporter
其次,您需要在config.js中設置數據出口商的URL,以便語音構建器知道將語音規範信息發送到哪裡。
open /config.js並將data_exporter_api添加到配置中,如下所示:
DATA_EXPORTER_API: {
BASE_URL: '<DATA_EXPORTER_URL>',
API_KEY: '<DATA_EXPORTER_API_KEY>',
}
如果base_url是您的數據出口商URL,而API_KEY是數據導出器的API鍵。
Redeploy語音構建器UI實例現在具有新的配置,並且知道如何發送語音規範信息。到您的數據出口商
./deploy.sh ui update
嘗試創建一份新工作!語音構建器現在應使用創建作業的語音規範向您的data_exporter_url發送請求。
VoiceBuildingSpecification是語音規範的JSON定義。當用戶從UI觸發語音構建請求時,語音構建器後端創建了此規範。數據出口商(通過其API傳遞給數據出口商)可以使用它來轉換文件和TTS引擎的培訓參數。
{
"id": int,
"voice_name": string,
"created_by": string,
"job_folder": string,
"lexicon_path": object(Path),
"phonology_path": object(Path),
"wavs_path": object(Path),
"wavs_info_path": object(Path),
"sample_rate": int,
"tts_engine": string,
"engine_params": [object(EngineParam)],
}
| 字段 | 描述 |
|---|---|
| ID | 獨特的全球工作ID。 |
| Voice_name | 用戶友好的語音名稱(例如多揚聲器語音)。 |
| 創建了_BY | 創建聲音的用戶的名稱。 |
| Job_folder | GCS工作文件夾的路徑。這是與作業相關的所有數據都是存儲的地方。 |
| Lexicon_Path | 通往詞典的路徑。 |
| Phonology_path | 通往語音的路徑。 |
| wavs_path | 通往WAV的路徑(應該是焦油文件)。 |
| wavs_info_path | 包含WAV名稱和提示的映射的文件的路徑。 |
| sample_rate | 應構建聲音的樣本率。 |
| tts_engine | TTS引擎的類型訓練聲音。該值的值是從選定的TTS引擎引擎。 |
| Engine_params | TTS引擎的其他參數。 |
EngineParam包含TTS後端發動機的參數。
{
"key": string,
"value": string
}
| 字段 | 描述 |
|---|---|
| 鑰匙 | 參數鍵。 |
| 價值 | 參數鍵的值。 |
Path包含有關文件路徑的信息。
{
"path": string
"file_type": string
}
| 字段 | 描述 |
|---|---|
| 小路 | 文件的路徑。 |
| file_type | 文件的格式。 |
例如,如果您設置了數據出口商,則使用我們預定義的節日引擎創建語音時,語音構建器會將請求主體類似於以下的請求主體。然後,您的數據出口商必須預處理數據並將其放置在job_folder位置(在此示例中為gs://your-voice-builder-jobs/1 )。將所有必要的文件放在文件夾中後,實際的語音構建過程將根據預期自動開始。
{
"id": 1,
"voice_name": "my_voice",
"createdBy": "[email protected]",
“job_folder”: "gs://your-voice-builder-jobs/1";
"engine_params": [
{
"key": "param_for_festival1",
"value": "50"
},
{
"key": "param_for_festival2",
"value": "30"
}
],
"sample_rate": "22050",
"tts_engine": "festival",
"lexicon_path": {
"path": "gs://voice-builder-public-data/examples/sinhala/lexicon.scm",
"file_type": "SCM"
},
"phonology_path": {
"path": "gs://voice-builder-public-data/examples/sinhala/phonology.json",
"file_type": "JSON_EXTERNAL_PHONOLOGY"
},
"wavs_path": {
"path": "gs://voice-builder-public-data/examples/sinhala/wavs.tar.gz",
"file_type": "TAR"
},
"wavs_info_path": {
"path": "gs://voice-builder-public-data/examples/sinhala/txt.done.data",
"file_type": "LINE_INDEX"
},
}