8

這個問題的第一部分,現在它自己的,在這裏:Analyzing Text for Accents添加口音語音生成

問:怎麼能口音被添加到生成的語音?

我想出:

我不是說只是重音符號,或拐點,或任何奇異的那樣。我的意思是像英國口音,蘇格蘭口音或俄語等。

我認爲這可以在語言之外完成。 Ex:俄語中的某些東西可以用英國口音生成,或者用普通話可以用俄語口音生成。

我覺得基本過程是這樣的:

  1. 分析文本
    • 與數據庫(或類似的東西),以確定需要的口音比較,有多強是應該的,等
  2. 生成講話中指定的語言
    • Ë正常的文本到語音處理器。
  3. 根據分析的文本確定指定的口音。
    • 這是有問題的部分。
    • 我認爲一組振幅和濾波器對於下一步的工作效果最好。
  4. 網格語音和口音。
    • 這將是容易的部分。
    • 它可能可以通過將口音與口音相乘來完成,就像許多其他DSP方法一樣。

這確實是一個更一般的DSP問題,但我想拿出一個程序化算法做的,而不是一個一般的想法這一點。

+0

有(至少)兩個完全脫離的問題在這裏:關於文本分析的一部分,有關語音合成的一部分。這些應該作爲獨立的SO問題提出。 – 2012-03-15 01:44:23

+0

@Oli我想到了這一點,但分析部分與生成部分緊密聯繫,我認爲他們應該在一起。 – Jon 2012-03-15 01:45:14

+0

嗯。第一個本質上是一個解析/文本分析問題;第二個本質上是一個DSP問題。範圍似乎有點太廣泛的堆棧溢出問題... – 2012-03-15 01:50:38

回答

2

口音?

重音不是聲音過濾器;它是語言中文本的聲學實現模式。你不能記錄美國英語,通過「振幅和過濾器陣列」來運行它,並且會彈出英式英語。 DSP有用的是在執行prosody,而不是重音。

基本上(最簡單的模型),重音由音素序列的音素規則組成。對口音的感知進一步受到影響by prosody以及說話者在閱讀文本時選擇哪個音素。

語音生成

語音產生的過程有兩個基本步驟:

  1. 文本到音素:將書面文字音素的序列(加應力等超音段和韻律信息像話語邊界)。這有點依賴於口音(例如,美國和英國的說話者對「實驗室」的輸出有所不同)。

  2. 電話轉語音:根據音素的順序,根據方言的音素語音實現規則生成音頻。 (通常情況下,你會合並雙音素,然後在聲學上調整韻律)。這與口音高度相關,正是這一步賦予口音的主要品質。即使在兩種口音之間共享,特定的音素可能具有明顯不同的聲學實現。

通常這些是成對的。雖然你可能有一個英國口音的語音發生器,使用美國的發音,這聽起來很奇怪。

生成語音與給定的口音

編寫文本到語音的程序是工作的一個巨大的量(特別是要實現一個共同的方案,你必須記錄爲母語的人來說在每一個可能的音素語言),所以你最好使用現有的。

簡而言之,如果您想要英式口音,請使用英式英語text-to-phoneme引擎和英式英語音素引擎。

對於美式和英式英語,標準普通話,大都會法語等常用口音,將會有多種選擇,包括可以修改的開放源代碼(如下所示)。例如,看看FreeTTSeSpeak。對於較不常見的口音,不幸的是現有的引擎可能不存在。

帶有外國口音

英語上帶有一個外國口音的發言文本是對社會並不十分著名的,所以完整的系統可能不存在。

一種策略是將現成的用於本地口音的text-to-phoneme引擎與用於外語的phoneme-to-speech引擎相結合。例如,一位在美國學習英語的俄語母語人士可以合理地使用實驗室這樣的單詞的美國發音,並將其音素映射到他的母語俄羅斯音素上,並以俄語發音。 (我相信有一個網站會爲英語和日語做這個,但我沒有鏈接。)

問題是結果太過分了。一個真正的英語學習者會嘗試識別和生成他的母語中不存在的音素,並且還會改變他對本地音素的認識以接近本地發音。結果與母語人士的結果有多密切相關,但使用純粹的外部極端聽起來很荒謬(而且大多是不可理解的)。因此,爲了生成似是而非的美式英語口音(例如),您必須編寫一個文本到音素引擎。您可以使用現有的美國英語和俄語text-to-phoneme引擎作爲起點。如果你不願意找到並記錄這樣的揚聲器,你可能仍然可以通過使用DSP來合併來自這兩個引擎的樣本。對於eSpeak,它使用共振峯綜合而不是記錄樣本,所以將多種語言的信息組合起來可能更容易。

另一件需要考慮的事情是,外國人通常會在其母語的語音學影響下修改音素的序列,通常通過簡化輔音羣,插入元音字母元音,或者雙元音或打破元音字母序列。

There is some literature on this topic.

+1

哇......這是很多有用的信息。我不確定還有什麼可說的,但這是我想我會得到的最好答案。 – Jon 2012-03-24 18:36:14

4

這個問題本身並不是「編程」:它是語言學。編程相對容易。對於分析來說,這將非常困難,事實上,讓用戶指定口音可能會更好;或者你想要一個自動故事閱讀器?

但是,現代的文本到語音的基本口音是可行的。你知道國際音標嗎? http://en.wikipedia.org/wiki/International_Phonetic_Alphabet 它基本上列出了人類聲音可能產生的所有聲音。重音就是從字母表到自身的映射(A函數)。例如,要讓一個美國人的口音對一個美國人來說是英國人的聲音(雖然不足以使它對英國人來說聽起來是英國人),但你可以在一個詞的中間去掉所有「r」音。因此,例如,牙槽動的顫音將被有聲的uvular摩擦音替代。 (很多角落案例只是爲了解決這個問題)。

長與短:這並不容易,這可能就是爲什麼沒有人做到這一點。我敢肯定,一些語言學教授會說他們不可能。但這正是語言學教授所做的。但是你基本上需要閱讀幾本有關口音和發音的教科書,才能解決這個問題。祝你好運!

+0

+1。我正在尋找「故事閱讀器」的方法,並且你的回答肯定會提供一些好的提示。你認爲你可以提供各種類型的「路線圖」嗎?像僞代碼一樣? – Jon 2012-03-22 02:07:28

+1

上帝沒有。這絕不是一個小項目。 – DanielOfTaebl 2012-03-23 17:16:30

+0

「近期行動計劃」爲此目的不準確;它的目標是成爲一個*音素*字母表(儘管它的名字)。 – 2012-03-24 01:06:51