处理大量的lis

2024-06-08 22:42:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编辑我以前的文章,以前我不能很好的解释。我写了这段代码

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\u values是音素列表,其中包含每个音素的相应列表。每个音素的列表都与我从Maya获得的混合变形滑块值有关。我在玛雅有6个混合形状,分别是下唇在上齿下,嘴唇接触,嘴唇张开,牙齿接触,下巴张开,嘴唇圆润。所以这些值是音素对于每个滑块值的范围。你知道吗

[-1,-1]表示未使用特定的blendshape。其他值是形状可以移动的范围。你知道吗

列表显示,大多数情况下,它只是一个单一的唇形是活跃的一个音素,其余的是[-1,-1]。但对于某些音素,有2或3个唇形同时活跃。我在Maya中手动设置了动画。“唇形”的值从0到1不等。你知道吗

输入文件的内容,音节化音素.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

程序应该遍历文件中的所有这些音素,并通过参考上面的列表来设置相应唇形的值。应存储这些值,以便进行进一步的工作。单引号表示音节边界。首先,程序应该忽略音节边界遍历音素,并保存所有形状的唇形值。然后在下一阶段,它应该开始查看每个边界内部。你知道吗

到目前为止,我只有这个,但我对如何进一步进行空白。我想我已经很好地解释了我的问题。非常感谢。你知道吗

这些值是“形状”列表中存在的形状的值。有人能帮忙吗。非常感谢。你知道吗


Tags: 列表paramhhshlineaa边界音节
1条回答
网友
1楼 · 发布于 2024-06-08 22:42:55

假设你已经知道哪些音素和哪些唇形有关,听起来你只需要建立一个字典。就你的问题领域而言,这只是一个例子,可能是无稽之谈:

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而不是一个细微不同的字符串。)

这对你有帮助吗?你能看看如何把你的数据转换成这种形式吗?你知道吗

相关问题 更多 >