2011-08-03 8 views
0

で作業、私はこのコードを書いた大きなリスト

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 pFile : 
      line = line.split() 
      if line == "'" : 
       continue 

param_valuesは、各音素の対応リストを持っている音素のリストです。各音素のリストは、Mayaから得たブレンドシェイプのスライダの値に関連しています。 Mayaには、lower_lip_under_upper_teeth、lips_touch、lips_spread、teeth touch、jaw_open、lips_roundの6つのブレンドシェイプがあります。したがって、これらの値は、各スライダ値に対して音素が有する範囲である。

[-1,-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

この宿題はありますか? – wberry

+0

これは私のプロジェクトです。私はPythonの初心者です。 – zingy

答えて

2

まず、いくつかのメモ...

  • あなたは辞書で「ZH」行の末尾にカンマを逃しました。
  • "tFile"は "pFile"にする必要があります。ラインは==場合
  • は、 " ' "ではないはずです。

    もライン==場合は"'":

これはどう? ...

def coart(phonemeFile) : 
    """ Coarticulation function where forward and backward coarticulation take place a and parameter values are generated""" 

    all_lines = [] 
    with open(phonemeFile, "r") as pFile : 
     for line in pFile : 
      next_line = [] 
      line = line.split() 
      for syllable in line:   
       if syllable == "'" : 
        continue 
       next_coart = param_values.get(syllable) 
       next_line.append((syllable, next_coart)) 
      all_lines.append(next_line) 
+0

これは完璧に動作します。訂正していただきありがとうございます。 – zingy

+0

今私はこれに関連してより多くの質問があります。別の質問を投稿したのですか、質問を編集する必要がありますか? – zingy

+0

また、新しいリストを取得したときには、小数点の値がグローバルリストにあるものよりも長くなります。新しいリストは、そこから値をどのように変更するのでしょうか? – zingy

0

おそらくこのような何かが働くだろう:

def coart(phonemeFile) : 

    results = {} 

    f = open("syllabifiedPhonemes.txt", "r") 
    for line in f.readlines(): 
     syllables = line.split("'") 
     for syllable in syllables: 
     phonemes = list(map(lambda x: x.strip(), syllable.split())) 
     data = [] 
     for phoneme in phonemes: 
      data.append(param_values[phoneme]) 

     results[' '.join(phonemes)] = data  

    print(results) 
    f.close() 
+0

ありがとうございます – zingy

関連する問題