2011-07-28 67 views
2

我在編輯我之前無法正確解釋的帖子。我寫了這樣的代碼,即處理海量清單

param_values = { 
      'aa' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,1.0], [-1,-1]],  
      'ae' : [[-1,-1], [-1,-1], [0.3,0.4], [-1,-1], [0.15,1.0], [-1,-1]], 
      'ah' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,1.0], [-1,-1]], 
      'ao' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1]], 
      'b' : [[-1,-1], [0.2,1.0], [-1,-1], [-1,-1], [0.15,0.2], [-1,-1]], 
      'ch' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.4], [-1,-1]], 
      'd' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.4], [-1,-1]], 
      'dh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.35], [-1,-1]], 
      'dx' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.35], [-1,-1]], 
      'eh' : [[-1,-1], [-1,-1], [0.1,0.5], [-1,-1], [0.4,0.7], [-1,-1]], 
      'er' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.5], [-1,-1]], 
      'ey' : [[-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [0.3,0.5], [-1,-1]], 
      'f' : [[0.5,1.0], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1]], 
      'g' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.8], [-1,-1]], 
      'hh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.8], [-1,-1]], 
      'ih' : [[-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [0.05,0.15], [-1,-1]], 
      'iy' : [[-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [0.1,0.15], [-1,-1]], 
      'jh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.6], [-1,-1]], 
      'k' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.8], [-1,-1]], 
      'l' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.6], [-1,-1]], 
      'm' : [[-1,-1], [0.2,1.0], [-1,-1], [-1,-1], [0.15,0.2], [-1,-1]], 
      'n' : [[-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [-1,-1]], 
      'ng' : [[-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [0.09,0.3], [-1,-1]], 
      'p' : [[-1,-1], [0.2,1.0], [-1,-1], [-1,-1], [0.15,0.2], [-1,-1]], 
      'r' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.6], [-1,-1]], 
      's' : [[-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [-1,-1]], 
      'sh' : [[-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [-1,-1]], 
      't' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.4], [-1,-1]], 
      'th' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.2], [-1,-1]], 
      'uh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.5,1.0]], 
      'uw' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.5,1.0]], 
      'v' : [[0.5,1.0], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1]], 
      'w' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.2,1.0]], 
      'y' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.4], [-1,-1]], 
      'z' : [[-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [-1,-1]], 
      'zh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.6], [-1,-1]] 
      'o' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.4,1.0]] 
     } 

def coart(phonemeFile) : 
    """ Coarticulation function where forward and backward coarticulation take place a and parameter values are generated""" 
    with open("syllabifiedPhonemes.txt", "r") as pFile : 
     for line in tFile : 
      line = line.split() 
      if line == " ' " : 
       continue 

param_values是具有每個音素的對應列表的音素列表。每個音素都有的列表涉及到我從Maya獲得的混合形狀滑塊值。我在瑪雅有6種混合形狀,分別是lower_lip_under_upper_teeth,lips_touch,lips_spread,tooth touch,jaw_open和lips_round。所以這些值是音素對每個滑塊值的範圍。

[-1,-1]表示特定的混合形狀未被使用。其他值是形狀可以移動的範圍。

該列表顯示了,其中大部分只是一個脣形,對於一個音素是有效的,其餘的是[-1,-1]。但對於一些音位,同時有2或3個脣形活動。我已經在Maya中手動對它們進行了動畫處理。脣形狀的值從0變化到1。

輸入文件的內容,是syllabifiedPhonemes.txt,

sh iy ' hh eh ' t er ' t aa r k ' s uw t n ' k r iy s ' hh iy ' w aa ' sh w aa dx ' er ' l ih ' y er 

方案應經過的所有文件中的這些音素的和設置的值通過參考上面的列表來查看其對應的脣形。應該存儲這些值,以便進一步開展工作。單引號代表音節邊界。首先,程序應該通過忽略音節邊界的音素並保存所有形狀的脣形值。然後在下一階段,它應該開始尋找每個邊界內。

到目前爲止,我只有這一點,但我對如何進一步進行了空白。我想我已經正確解釋了我的查詢。謝謝。

這些值是形狀列表中存在的形狀的值。任何人都可以幫忙請。謝謝。

+0

對不起,但我不明白音素是如何連接到形狀? – Jacob

+2

其他人正試圖弄清音素實例中的例子列表是什麼? – Chowlett

+1

我認爲這裏缺少的部分是音素和形狀是如何關聯的? @Chowlett – Jacob

回答

1

假設你已經知道哪個音素與哪個嘴脣形狀相關,這聽起來像你只需要建立一個詞典。這只是一個例子,可能是在胡說八道您的問題域方面:

lip_shapes = { 
    'aa': ['neutral', 'lower lip under upper teeth'], 
    'ae': ['lips touch', 'lip spread'], 
    # etc... 
} 

所以,你可以找到這樣的音素的口形:lip_shapes['aa']

你想要做的下一件事是代表口形與常量,而不是字符串:

NEUTRAL = 0 
LOWER_LIP_UNDER_UPPER_TEETH = 1 
LIPS_TOUCH = 2 
LIP_SPREAD = 3 

lip_shapes = { 
    'aa': [NEUTRAL, LOWER_LIP_UNDER_UPPER_TEETH], 
    # etc... 
} 

使用常量名的口形,而不是長字符串,將讓你的編程不太容易拼寫錯誤。 (你會導致一個NameError,而不是有一個微妙的不同的字符串。)

這對你有幫助嗎?你能看到如何將你的數據轉換成這種形式嗎?

+0

@本是的,它可以像一本字典。我擁有與每個音素相關的嘴脣形狀的所有價值。它們是已知的,必須以數據庫或表格格式存儲。 – zingy

+0

當程序遇到音素時,所有的脣形都應該有一定的價值。活動的會有一個0到1之間的值,不活動的會是0.不知道我是否清楚地解釋了這個問題。謝謝。 – zingy

+0

是的,我有點理解你解釋,但我很困惑如何把這個代碼。 – zingy