2011-07-28 6 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から得たブレンドシェイプのスライダの値に関連しています。 Mayaには、lower_lip_under_upper_teeth、lips_touch、lips_spread、teeth touch、jaw_open、lips_roundの6つのブレンドシェイプがあります。したがって、これらの値は、各スライダ値に対して音素が有する範囲である。

[-1、-1]は、特定のblendshapeが使用されていないことを示します。その他の値は、シェイプが移動できる範囲です。

リストには、ほとんどの場合、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

@ Benはい、それは辞書のようなものです。私は各音素に関連する口唇形状のすべての値を持っています。彼らは知られており、データベースやテーブル形式のように格納する必要があります。 – zingy

+0

プログラムが音素に遭遇すると、すべての唇の形にある値があるはずです。アクティブなものは0〜1の値を持ち、非アクティブなものは0になります。私が質問をはっきりと説明しているかどうかは分かりません。ありがとうございました。 – zingy

+0

ええ、私はあなたが説明したことを理解していますが、これをコードに入れる方法については混乱しています。 – zingy

関連する問題