Using the Oculus viseme reference with blanks filled in based on the Microsoft SPVISEMES

%%capture
%pip install pandas
import pandas as pd

df = pd.read_csv('/tmp/arpa-oculus.tsv', sep='\t', header=None, na_filter=False)
from IPython.core.display import HTML
HTML(df.to_html())
0 1 2
0 AA0 aa
1 AA1 aa
2 AA2 aa
3 AE0 E aa
4 AE1 E aa
5 AE2 E aa
6 AH0 E aa
7 AH1 E aa
8 AH2 E aa
9 AO0 aa
10 AO1 aa
11 AO2 aa
12 AW0 aa U
13 AW1 aa U
14 AW2 aa U
15 AY0 E
16 AY1 E
17 AY2 E
18 B PP
19 CH CH
20 D DD
21 DH TH
22 EH0 E
23 EH1 E
24 EH2 E
25 ER0 RR E
26 ER1 RR E
27 ER2 RR E
28 EY0 I E
29 EY1 I E
30 EY2 I E
31 F FF
32 G kk
33 HH kk
34 IH0 I
35 IH1 I
36 IH2 I
37 IY0 I
38 IY1 I
39 IY2 I
40 JH CH
41 K kk
42 L nn
43 M PP
44 N nn
45 NG kk
46 OW0 O U
47 OW1 O U
48 OW2 O U
49 OY0 O I
50 OY1 O I
51 OY2 O I
52 P PP
53 R RR
54 S SS
55 SH CH
56 T DD
57 TH TH
58 UH0 U
59 UH1 U
60 UH2 U
61 UW0 U
62 UW1 U
63 UW2 U
64 V FF
65 W U
66 Y I
67 Z SS
68 ZH CH
69 spn neutral
df2 = pd.read_csv('/tmp/msviseme-oculus.tsv', sep='\t', header=0, na_filter=False)
HTML(df2.to_html())
SPVISEME Oculus closest
0 SP_VISEME_0 neutral
1 SP_VISEME_1
2 SP_VISEME_2 aa
3 SP_VISEME_3
4 SP_VISEME_4 E
5 SP_VISEME_5 RR
6 SP_VISEME_6 I
7 SP_VISEME_7 U
8 SP_VISEME_8
9 SP_VISEME_9
10 SP_VISEME_10
11 SP_VISEME_11 E
12 SP_VISEME_12 kk
13 SP_VISEME_13 RR
14 SP_VISEME_14 nn
15 SP_VISEME_15 SS
16 SP_VISEME_16 CH
17 SP_VISEME_17 TH
18 SP_VISEME_18 FF
19 SP_VISEME_19 DD
20 SP_VISEME_20 kk
21 SP_VISEME_21 PP