关于HTS问题集(question)的解析(一)

open_jtalk的训练包中,qst文件的前半段(上下文定义区)是这样的:

QS "LL-Phone_Yuuseion" {a^*,i^*,u^*,e^*,o^*,v^*,b^*,by^*,m^*,my^*,w^*,z^*,j^*,d^*,dy^*,n^*,ny^*,N^*,r^*,ry^*,g^*,gy^*,y^*}
QS "LL-Phone_Museion"  {A^*,I^*,U^*,E^*,O^*,f^*,p^*,py^*,s^*,sh^*,ts^*,ch^*,t^*,ty^*,k^*,ky^*,h^*,hy^*}
QS "LL-Phone_Muon"     {sil^*,pau^*}

QS "LL-Phone_Boin"                  {a^*,i^*,u^*,e^*,o^*,A^*,I^*,U^*,E^*,O^*}
QS "LL-Phone_Yuusei_Boin"           {a^*,i^*,u^*,e^*,o^*}
QS "LL-Phone_Museika_Boin"          {A^*,I^*,U^*,E^*,O^*}
QS "LL-Phone_Maejita_Boin"          {i^*,e^*,I^*,E^*}
QS "LL-Phone_Yuusei_Maejita_Boin"   {i^*,e^*}
QS "LL-Phone_Museika_Maejita_Boin"  {I^*,E^*}
QS "LL-Phone_Atojita_Boin"          {a^*,u^*,o^*,A^*,U^*,O^*}
QS "LL-Phone_Yuusei_Atojita_Boin"   {a^*,u^*,o^*}
QS "LL-Phone_Museika_Atojita_Boin"  {A^*,U^*,O^*}
QS "LL-Phone_Sema_Boin"             {i^*,u^*,I^*,U^*}
QS "LL-Phone_Yuusei_Sema_Boin"      {i^*,u^*}
QS "LL-Phone_Museika_Sema_Boin"     {I^*,U^*}
QS "LL-Phone_Han_Sema_Boin"         {e^*,o^*,E^*,O^*}
QS "LL-Phone_Yuusei_Han_Sema_Boin"  {e^*,o^*}
QS "LL-Phone_Museika_Han_Sema_Boin" {E^*,O^*}
QS "LL-Phone_Hiro_Boin"             {a^*,A^*}
QS "LL-Phone_Yuusei_Hiro_Boin"      {a^*}
QS "LL-Phone_Museika_Hiro_Boin"     {A^*}

QS "LL-Phone_Boin_A" {a^*,A^*}
QS "LL-Phone_Boin_I" {i^*,I^*}
QS "LL-Phone_Boin_U" {u^*,U^*}
QS "LL-Phone_Boin_E" {e^*,E^*}
QS "LL-Phone_Boin_O" {o^*,O^*}

QS "LL-Phone_Yuusei_Shiin" {v^*,b^*,by^*,m^*,my^*,w^*,z^*,j^*,d^*,dy^*,n^*,ny^*,N^*,r^*,ry^*,g^*,gy^*,y^*}
QS "LL-Phone_Musei_Shiin"  {f^*,p^*,py^*,s^*,sh^*,ts^*,ch^*,t^*,ty^*,k^*,ky^*,h^*,hy^*}
QS "LL-Phone_Kuchibiruon"  {v^*,b^*,by^*,m^*,my^*,w^*,f^*,p^*,py^*}
QS "LL-Phone_Hagukion"     {z^*,j^*,d^*,dy^*,n^*,ny^*,N^*,r^*,ry^*,s^*,sh^*,ts^*,ch^*,t^*,ty^*}
QS "LL-Phone_Kougaion"     {g^*,gy^*,y^*,k^*,ky^*}
QS "LL-Phone_Seimonon"     {h^*,hy^*}
QS "LL-Phone_Masatsuon"    {v^*,z^*,j^*,f^*,s^*,sh^*,h^*,hy^*}
QS "LL-Phone_Hasatsuon"    {ts^*,ch^*}
QS "LL-Phone_Haretsuon"    {b^*,by^*,d^*,dy^*,g^*,gy^*,p^*,py^*,t^*,ty^*,k^*,ky^*}
QS "LL-Phone_Bion"         {m^*,my^*,n^*,ny^*,N^*}
QS "LL-Phone_Han_Boin"     {w^*,r^*,ry^*,y^*}

QS "LL-Phone_Yuusei_Kuchibiru_Haretsuon" {b^*,by^*}
QS "LL-Phone_Yuusei_Kuchibiru_Bion"      {m^*,my^*}
QS "LL-Phone_Yuusei_Haguki_Masatsuon"    {z^*,j^*}
QS "LL-Phone_Yuusei_Haguki_Haretsuon"    {d^*,dy^*}
QS "LL-Phone_Yuusei_Haguki_Bion"         {n^*,ny^*,N^*}
QS "LL-Phone_Yuusei_Haguki_Han_Boin"     {r^*,ry^*}
QS "LL-Phone_Yuusei_Kougai_Haretsuon"    {g^*,gy^*}
QS "LL-Phone_Musei_Kuchibiru_Haretsuon"  {p^*,py^*}
QS "LL-Phone_Musei_Haguki_Masatsuon"     {s^*,sh^*}
QS "LL-Phone_Musei_Haguki_Hasatsuon"     {ts^*,ch^*}
QS "LL-Phone_Musei_Haguki_Haretsuon"     {t^*,ty^*}
QS "LL-Phone_Musei_Kougai_Haretsuon"     {k^*,ky^*}
QS "LL-Phone_Musei_Seimon_Masatsuon"     {h^*,hy^*}

QS "LL-Phone_Youon" {by^*,my^*,j^*,dy^*,ny^*,ry^*,gy^*,py^*,sh^*,ch^*,ty^*,ky^*,hy^*}

QS "LL-Phone_A"   {A^*}
QS "LL-Phone_E"   {E^*}
QS "LL-Phone_I"   {I^*}
QS "LL-Phone_N"   {N^*}
QS "LL-Phone_O"   {O^*}
QS "LL-Phone_U"   {U^*}
QS "LL-Phone_a"   {a^*}
QS "LL-Phone_b"   {b^*}
QS "LL-Phone_by"  {by^*}
QS "LL-Phone_ch"  {ch^*}
QS "LL-Phone_cl"  {cl^*}
QS "LL-Phone_d"   {d^*}
QS "LL-Phone_dy"  {dy^*}
QS "LL-Phone_e"   {e^*}
QS "LL-Phone_f"   {f^*}
QS "LL-Phone_g"   {g^*}
QS "LL-Phone_gy"  {gy^*}
QS "LL-Phone_h"   {h^*}
QS "LL-Phone_hy"  {hy^*}
QS "LL-Phone_i"   {i^*}
QS "LL-Phone_j"   {j^*}
QS "LL-Phone_k"   {k^*}
QS "LL-Phone_ky"  {ky^*}
QS "LL-Phone_m"   {m^*}
QS "LL-Phone_my"  {my^*}
QS "LL-Phone_n"   {n^*}
QS "LL-Phone_ny"  {ny^*}
QS "LL-Phone_o"   {o^*}
QS "LL-Phone_p"   {p^*}
QS "LL-Phone_pau" {pau^*}
QS "LL-Phone_py"  {py^*}
QS "LL-Phone_r"   {r^*}
QS "LL-Phone_ry"  {ry^*}
QS "LL-Phone_s"   {s^*}
QS "LL-Phone_sh"  {sh^*}
QS "LL-Phone_sil" {sil^*}
QS "LL-Phone_t"   {t^*}
QS "LL-Phone_ts"  {ts^*}
QS "LL-Phone_ty"  {ty^*}
QS "LL-Phone_u"   {u^*}
QS "LL-Phone_v"   {v^*}
QS "LL-Phone_w"   {w^*}
QS "LL-Phone_y"   {y^*}
QS "LL-Phone_z"   {z^*}

QS "L-Phone_Yuuseion" {*^a-*,*^i-*,*^u-*,*^e-*,*^o-*,*^v-*,*^b-*,*^by-*,*^m-*,*^my-*,*^w-*,*^z-*,*^j-*,*^d-*,*^dy-*,*^n-*,*^ny-*,*^N-*,*^r-*,*^ry-*,*^g-*,*^gy-*,*^y-*}
QS "L-Phone_Museion"  {*^A-*,*^I-*,*^U-*,*^E-*,*^O-*,*^f-*,*^p-*,*^py-*,*^s-*,*^sh-*,*^ts-*,*^ch-*,*^t-*,*^ty-*,*^k-*,*^ky-*,*^h-*,*^hy-*}
QS "L-Phone_Muon"     {*^sil-*,*^pau-*}

QS "L-Phone_Boin"                  {*^a-*,*^i-*,*^u-*,*^e-*,*^o-*,*^A-*,*^I-*,*^U-*,*^E-*,*^O-*}
QS "L-Phone_Yuusei_Boin"           {*^a-*,*^i-*,*^u-*,*^e-*,*^o-*}
QS "L-Phone_Museika_Boin"          {*^A-*,*^I-*,*^U-*,*^E-*,*^O-*}
QS "L-Phone_Maejita_Boin"          {*^i-*,*^e-*,*^I-*,*^E-*}
QS "L-Phone_Yuusei_Maejita_Boin"   {*^i-*,*^e-*}
QS "L-Phone_Museika_Maejita_Boin"  {*^I-*,*^E-*}
QS "L-Phone_Atojita_Boin"          {*^a-*,*^u-*,*^o-*,*^A-*,*^U-*,*^O-*}
QS "L-Phone_Yuusei_Atojita_Boin"   {*^a-*,*^u-*,*^o-*}
QS "L-Phone_Museika_Atojita_Boin"  {*^A-*,*^U-*,*^O-*}
QS "L-Phone_Sema_Boin"             {*^i-*,*^u-*,*^I-*,*^U-*}
QS "L-Phone_Yuusei_Sema_Boin"      {*^i-*,*^u-*}
QS "L-Phone_Museika_Sema_Boin"     {*^I-*,*^U-*}
QS "L-Phone_Han_Sema_Boin"         {*^e-*,*^o-*,*^E-*,*^O-*}
QS "L-Phone_Yuusei_Han_Sema_Boin"  {*^e-*,*^o-*}
QS "L-Phone_Museika_Han_Sema_Boin" {*^E-*,*^O-*}
QS "L-Phone_Hiro_Boin"             {*^a-*,*^A-*}
QS "L-Phone_Yuusei_Hiro_Boin"      {*^a-*}
QS "L-Phone_Museika_Hiro_Boin"     {*^A-*}

QS "L-Phone_Boin_A" {*^a-*,*^A-*}
QS "L-Phone_Boin_I" {*^i-*,*^I-*}
QS "L-Phone_Boin_U" {*^u-*,*^U-*}
QS "L-Phone_Boin_E" {*^e-*,*^E-*}
QS "L-Phone_Boin_O" {*^o-*,*^O-*}

QS "L-Phone_Yuusei_Shiin" {*^v-*,*^b-*,*^by-*,*^m-*,*^my-*,*^w-*,*^z-*,*^j-*,*^d-*,*^dy-*,*^n-*,*^ny-*,*^N-*,*^r-*,*^ry-*,*^g-*,*^gy-*,*^y-*}
QS "L-Phone_Musei_Shiin"  {*^f-*,*^p-*,*^py-*,*^s-*,*^sh-*,*^ts-*,*^ch-*,*^t-*,*^ty-*,*^k-*,*^ky-*,*^h-*,*^hy-*}
QS "L-Phone_Kuchibiruon"  {*^v-*,*^b-*,*^by-*,*^m-*,*^my-*,*^w-*,*^f-*,*^p-*,*^py-*}
QS "L-Phone_Hagukion"     {*^z-*,*^j-*,*^d-*,*^dy-*,*^n-*,*^ny-*,*^N-*,*^r-*,*^ry-*,*^s-*,*^sh-*,*^ts-*,*^ch-*,*^t-*,*^ty-*}
QS "L-Phone_Kougaion"     {*^g-*,*^gy-*,*^y-*,*^k-*,*^ky-*}
QS "L-Phone_Seimonon"     {*^h-*,*^hy-*}
QS "L-Phone_Masatsuon"    {*^v-*,*^z-*,*^j-*,*^f-*,*^s-*,*^sh-*,*^h-*,*^hy-*}
QS "L-Phone_Hasatsuon"    {*^ts-*,*^ch-*}
QS "L-Phone_Haretsuon"    {*^b-*,*^by-*,*^d-*,*^dy-*,*^g-*,*^gy-*,*^p-*,*^py-*,*^t-*,*^ty-*,*^k-*,*^ky-*}
QS "L-Phone_Bion"         {*^m-*,*^my-*,*^n-*,*^ny-*,*^N-*}
QS "L-Phone_Han_Boin"     {*^w-*,*^r-*,*^ry-*,*^y-*}

QS "L-Phone_Yuusei_Kuchibiru_Haretsuon" {*^b-*,*^by-*}
QS "L-Phone_Yuusei_Kuchibiru_Bion"      {*^m-*,*^my-*}
QS "L-Phone_Yuusei_Haguki_Masatsuon"    {*^z-*,*^j-*}
QS "L-Phone_Yuusei_Haguki_Haretsuon"    {*^d-*,*^dy-*}
QS "L-Phone_Yuusei_Haguki_Bion"         {*^n-*,*^ny-*,*^N-*}
QS "L-Phone_Yuusei_Haguki_Han_Boin"     {*^r-*,*^ry-*}
QS "L-Phone_Yuusei_Kougai_Haretsuon"    {*^g-*,*^gy-*}
QS "L-Phone_Musei_Kuchibiru_Haretsuon"  {*^p-*,*^py-*}
QS "L-Phone_Musei_Haguki_Masatsuon"     {*^s-*,*^sh-*}
QS "L-Phone_Musei_Haguki_Hasatsuon"     {*^ts-*,*^ch-*}
QS "L-Phone_Musei_Haguki_Haretsuon"     {*^t-*,*^ty-*}
QS "L-Phone_Musei_Kougai_Haretsuon"     {*^k-*,*^ky-*}
QS "L-Phone_Musei_Seimon_Masatsuon"     {*^h-*,*^hy-*}

QS "L-Phone_Youon" {*^by-*,*^my-*,*^j-*,*^dy-*,*^ny-*,*^ry-*,*^gy-*,*^py-*,*^sh-*,*^ch-*,*^ty-*,*^ky-*,*^hy-*}

QS "L-Phone_A"   {*^A-*}
QS "L-Phone_E"   {*^E-*}
QS "L-Phone_I"   {*^I-*}
QS "L-Phone_N"   {*^N-*}
QS "L-Phone_O"   {*^O-*}
QS "L-Phone_U"   {*^U-*}
QS "L-Phone_a"   {*^a-*}
QS "L-Phone_b"   {*^b-*}
QS "L-Phone_by"  {*^by-*}
QS "L-Phone_ch"  {*^ch-*}
QS "L-Phone_cl"  {*^cl-*}
QS "L-Phone_d"   {*^d-*}
QS "L-Phone_dy"  {*^dy-*}
QS "L-Phone_e"   {*^e-*}
QS "L-Phone_f"   {*^f-*}
QS "L-Phone_g"   {*^g-*}
QS "L-Phone_gy"  {*^gy-*}
QS "L-Phone_h"   {*^h-*}
QS "L-Phone_hy"  {*^hy-*}
QS "L-Phone_i"   {*^i-*}
QS "L-Phone_j"   {*^j-*}
QS "L-Phone_k"   {*^k-*}
QS "L-Phone_ky"  {*^ky-*}
QS "L-Phone_m"   {*^m-*}
QS "L-Phone_my"  {*^my-*}
QS "L-Phone_n"   {*^n-*}
QS "L-Phone_ny"  {*^ny-*}
QS "L-Phone_o"   {*^o-*}
QS "L-Phone_p"   {*^p-*}
QS "L-Phone_pau" {*^pau-*}
QS "L-Phone_py"  {*^py-*}
QS "L-Phone_r"   {*^r-*}
QS "L-Phone_ry"  {*^ry-*}
QS "L-Phone_s"   {*^s-*}
QS "L-Phone_sh"  {*^sh-*}
QS "L-Phone_sil" {*^sil-*}
QS "L-Phone_t"   {*^t-*}
QS "L-Phone_ts"  {*^ts-*}
QS "L-Phone_ty"  {*^ty-*}
QS "L-Phone_u"   {*^u-*}
QS "L-Phone_v"   {*^v-*}
QS "L-Phone_w"   {*^w-*}
QS "L-Phone_y"   {*^y-*}
QS "L-Phone_z"   {*^z-*}

QS "C-Phone_Yuuseion" {*-a+*,*-i+*,*-u+*,*-e+*,*-o+*,*-v+*,*-b+*,*-by+*,*-m+*,*-my+*,*-w+*,*-z+*,*-j+*,*-d+*,*-dy+*,*-n+*,*-ny+*,*-N+*,*-r+*,*-ry+*,*-g+*,*-gy+*,*-y+*}
QS "C-Phone_Museion"  {*-A+*,*-I+*,*-U+*,*-E+*,*-O+*,*-f+*,*-p+*,*-py+*,*-s+*,*-sh+*,*-ts+*,*-ch+*,*-t+*,*-ty+*,*-k+*,*-ky+*,*-h+*,*-hy+*}
QS "C-Phone_Muon"     {*-sil+*,*-pau+*}

QS "C-Phone_Boin"                  {*-a+*,*-i+*,*-u+*,*-e+*,*-o+*,*-A+*,*-I+*,*-U+*,*-E+*,*-O+*}
QS "C-Phone_Yuusei_Boin"           {*-a+*,*-i+*,*-u+*,*-e+*,*-o+*}
QS "C-Phone_Museika_Boin"          {*-A+*,*-I+*,*-U+*,*-E+*,*-O+*}
QS "C-Phone_Maejita_Boin"          {*-i+*,*-e+*,*-I+*,*-E+*}
QS "C-Phone_Yuusei_Maejita_Boin"   {*-i+*,*-e+*}
QS "C-Phone_Museika_Maejita_Boin"  {*-I+*,*-E+*}
QS "C-Phone_Atojita_Boin"          {*-a+*,*-u+*,*-o+*,*-A+*,*-U+*,*-O+*}
QS "C-Phone_Yuusei_Atojita_Boin"   {*-a+*,*-u+*,*-o+*}
QS "C-Phone_Museika_Atojita_Boin"  {*-A+*,*-U+*,*-O+*}
QS "C-Phone_Sema_Boin"             {*-i+*,*-u+*,*-I+*,*-U+*}
QS "C-Phone_Yuusei_Sema_Boin"      {*-i+*,*-u+*}
QS "C-Phone_Museika_Sema_Boin"     {*-I+*,*-U+*}
QS "C-Phone_Han_Sema_Boin"         {*-e+*,*-o+*,*-E+*,*-O+*}
QS "C-Phone_Yuusei_Han_Sema_Boin"  {*-e+*,*-o+*}
QS "C-Phone_Museika_Han_Sema_Boin" {*-E+*,*-O+*}
QS "C-Phone_Hiro_Boin"             {*-a+*,*-A+*}
QS "C-Phone_Yuusei_Hiro_Boin"      {*-a+*}
QS "C-Phone_Museika_Hiro_Boin"     {*-A+*}

QS "C-Phone_Boin_A" {*-a+*,*-A+*}
QS "C-Phone_Boin_I" {*-i+*,*-I+*}
QS "C-Phone_Boin_U" {*-u+*,*-U+*}
QS "C-Phone_Boin_E" {*-e+*,*-E+*}
QS "C-Phone_Boin_O" {*-o+*,*-O+*}

QS "C-Phone_Yuusei_Shiin" {*-v+*,*-b+*,*-by+*,*-m+*,*-my+*,*-w+*,*-z+*,*-j+*,*-d+*,*-dy+*,*-n+*,*-ny+*,*-N+*,*-r+*,*-ry+*,*-g+*,*-gy+*,*-y+*}
QS "C-Phone_Musei_Shiin"  {*-f+*,*-p+*,*-py+*,*-s+*,*-sh+*,*-ts+*,*-ch+*,*-t+*,*-ty+*,*-k+*,*-ky+*,*-h+*,*-hy+*}
QS "C-Phone_Kuchibiruon"  {*-v+*,*-b+*,*-by+*,*-m+*,*-my+*,*-w+*,*-f+*,*-p+*,*-py+*}
QS "C-Phone_Hagukion"     {*-z+*,*-j+*,*-d+*,*-dy+*,*-n+*,*-ny+*,*-N+*,*-r+*,*-ry+*,*-s+*,*-sh+*,*-ts+*,*-ch+*,*-t+*,*-ty+*}
QS "C-Phone_Kougaion"     {*-g+*,*-gy+*,*-y+*,*-k+*,*-ky+*}
QS "C-Phone_Seimonon"     {*-h+*,*-hy+*}
QS "C-Phone_Masatsuon"    {*-v+*,*-z+*,*-j+*,*-f+*,*-s+*,*-sh+*,*-h+*,*-hy+*}
QS "C-Phone_Hasatsuon"    {*-ts+*,*-ch+*}
QS "C-Phone_Haretsuon"    {*-b+*,*-by+*,*-d+*,*-dy+*,*-g+*,*-gy+*,*-p+*,*-py+*,*-t+*,*-ty+*,*-k+*,*-ky+*}
QS "C-Phone_Bion"         {*-m+*,*-my+*,*-n+*,*-ny+*,*-N+*}
QS "C-Phone_Han_Boin"     {*-w+*,*-r+*,*-ry+*,*-y+*}

QS "C-Phone_Yuusei_Kuchibiru_Haretsuon" {*-b+*,*-by+*}
QS "C-Phone_Yuusei_Kuchibiru_Bion"      {*-m+*,*-my+*}
QS "C-Phone_Yuusei_Haguki_Masatsuon"    {*-z+*,*-j+*}
QS "C-Phone_Yuusei_Haguki_Haretsuon"    {*-d+*,*-dy+*}
QS "C-Phone_Yuusei_Haguki_Bion"         {*-n+*,*-ny+*,*-N+*}
QS "C-Phone_Yuusei_Haguki_Han_Boin"     {*-r+*,*-ry+*}
QS "C-Phone_Yuusei_Kougai_Haretsuon"    {*-g+*,*-gy+*}
QS "C-Phone_Musei_Kuchibiru_Haretsuon"  {*-p+*,*-py+*}
QS "C-Phone_Musei_Haguki_Masatsuon"     {*-s+*,*-sh+*}
QS "C-Phone_Musei_Haguki_Hasatsuon"     {*-ts+*,*-ch+*}
QS "C-Phone_Musei_Haguki_Haretsuon"     {*-t+*,*-ty+*}
QS "C-Phone_Musei_Kougai_Haretsuon"     {*-k+*,*-ky+*}
QS "C-Phone_Musei_Seimon_Masatsuon"     {*-h+*,*-hy+*}

QS "C-Phone_Youon" {*-by+*,*-my+*,*-j+*,*-dy+*,*-ny+*,*-ry+*,*-gy+*,*-py+*,*-sh+*,*-ch+*,*-ty+*,*-ky+*,*-hy+*}

QS "C-Phone_A"   {*-A+*}
QS "C-Phone_E"   {*-E+*}
QS "C-Phone_I"   {*-I+*}
QS "C-Phone_N"   {*-N+*}
QS "C-Phone_O"   {*-O+*}
QS "C-Phone_U"   {*-U+*}
QS "C-Phone_a"   {*-a+*}
QS "C-Phone_b"   {*-b+*}
QS "C-Phone_by"  {*-by+*}
QS "C-Phone_ch"  {*-ch+*}
QS "C-Phone_cl"  {*-cl+*}
QS "C-Phone_d"   {*-d+*}
QS "C-Phone_dy"  {*-dy+*}
QS "C-Phone_e"   {*-e+*}
QS "C-Phone_f"   {*-f+*}
QS "C-Phone_g"   {*-g+*}
QS "C-Phone_gy"  {*-gy+*}
QS "C-Phone_h"   {*-h+*}
QS "C-Phone_hy"  {*-hy+*}
QS "C-Phone_i"   {*-i+*}
QS "C-Phone_j"   {*-j+*}
QS "C-Phone_k"   {*-k+*}
QS "C-Phone_ky"  {*-ky+*}
QS "C-Phone_m"   {*-m+*}
QS "C-Phone_my"  {*-my+*}
QS "C-Phone_n"   {*-n+*}
QS "C-Phone_ny"  {*-ny+*}
QS "C-Phone_o"   {*-o+*}
QS "C-Phone_p"   {*-p+*}
QS "C-Phone_pau" {*-pau+*}
QS "C-Phone_py"  {*-py+*}
QS "C-Phone_r"   {*-r+*}
QS "C-Phone_ry"  {*-ry+*}
QS "C-Phone_s"   {*-s+*}
QS "C-Phone_sh"  {*-sh+*}
QS "C-Phone_sil" {*-sil+*}
QS "C-Phone_t"   {*-t+*}
QS "C-Phone_ts"  {*-ts+*}
QS "C-Phone_ty"  {*-ty+*}
QS "C-Phone_u"   {*-u+*}
QS "C-Phone_v"   {*-v+*}
QS "C-Phone_w"   {*-w+*}
QS "C-Phone_y"   {*-y+*}
QS "C-Phone_z"   {*-z+*}

QS "R-Phone_Yuuseion" {*+a=*,*+i=*,*+u=*,*+e=*,*+o=*,*+v=*,*+b=*,*+by=*,*+m=*,*+my=*,*+w=*,*+z=*,*+j=*,*+d=*,*+dy=*,*+n=*,*+ny=*,*+N=*,*+r=*,*+ry=*,*+g=*,*+gy=*,*+y=*}
QS "R-Phone_Museion"  {*+A=*,*+I=*,*+U=*,*+E=*,*+O=*,*+f=*,*+p=*,*+py=*,*+s=*,*+sh=*,*+ts=*,*+ch=*,*+t=*,*+ty=*,*+k=*,*+ky=*,*+h=*,*+hy=*}
QS "R-Phone_Muon"     {*+sil=*,*+pau=*}

QS "R-Phone_Boin"                  {*+a=*,*+i=*,*+u=*,*+e=*,*+o=*,*+A=*,*+I=*,*+U=*,*+E=*,*+O=*}
QS "R-Phone_Yuusei_Boin"           {*+a=*,*+i=*,*+u=*,*+e=*,*+o=*}
QS "R-Phone_Museika_Boin"          {*+A=*,*+I=*,*+U=*,*+E=*,*+O=*}
QS "R-Phone_Maejita_Boin"          {*+i=*,*+e=*,*+I=*,*+E=*}
QS "R-Phone_Yuusei_Maejita_Boin"   {*+i=*,*+e=*}
QS "R-Phone_Museika_Maejita_Boin"  {*+I=*,*+E=*}
QS "R-Phone_Atojita_Boin"          {*+a=*,*+u=*,*+o=*,*+A=*,*+U=*,*+O=*}
QS "R-Phone_Yuusei_Atojita_Boin"   {*+a=*,*+u=*,*+o=*}
QS "R-Phone_Museika_Atojita_Boin"  {*+A=*,*+U=*,*+O=*}
QS "R-Phone_Sema_Boin"             {*+i=*,*+u=*,*+I=*,*+U=*}
QS "R-Phone_Yuusei_Sema_Boin"      {*+i=*,*+u=*}
QS "R-Phone_Museika_Sema_Boin"     {*+I=*,*+U=*}
QS "R-Phone_Han_Sema_Boin"         {*+e=*,*+o=*,*+E=*,*+O=*}
QS "R-Phone_Yuusei_Han_Sema_Boin"  {*+e=*,*+o=*}
QS "R-Phone_Museika_Han_Sema_Boin" {*+E=*,*+O=*}
QS "R-Phone_Hiro_Boin"             {*+a=*,*+A=*}
QS "R-Phone_Yuusei_Hiro_Boin"      {*+a=*}
QS "R-Phone_Museika_Hiro_Boin"     {*+A=*}

QS "R-Phone_Boin_A" {*+a=*,*+A=*}
QS "R-Phone_Boin_I" {*+i=*,*+I=*}
QS "R-Phone_Boin_U" {*+u=*,*+U=*}
QS "R-Phone_Boin_E" {*+e=*,*+E=*}
QS "R-Phone_Boin_O" {*+o=*,*+O=*}

QS "R-Phone_Yuusei_Shiin" {*+v=*,*+b=*,*+by=*,*+m=*,*+my=*,*+w=*,*+z=*,*+j=*,*+d=*,*+dy=*,*+n=*,*+ny=*,*+N=*,*+r=*,*+ry=*,*+g=*,*+gy=*,*+y=*}
QS "R-Phone_Musei_Shiin"  {*+f=*,*+p=*,*+py=*,*+s=*,*+sh=*,*+ts=*,*+ch=*,*+t=*,*+ty=*,*+k=*,*+ky=*,*+h=*,*+hy=*}
QS "R-Phone_Kuchibiruon"  {*+v=*,*+b=*,*+by=*,*+m=*,*+my=*,*+w=*,*+f=*,*+p=*,*+py=*}
QS "R-Phone_Hagukion"     {*+z=*,*+j=*,*+d=*,*+dy=*,*+n=*,*+ny=*,*+N=*,*+r=*,*+ry=*,*+s=*,*+sh=*,*+ts=*,*+ch=*,*+t=*,*+ty=*}
QS "R-Phone_Kougaion"     {*+g=*,*+gy=*,*+y=*,*+k=*,*+ky=*}
QS "R-Phone_Seimonon"     {*+h=*,*+hy=*}
QS "R-Phone_Masatsuon"    {*+v=*,*+z=*,*+j=*,*+f=*,*+s=*,*+sh=*,*+h=*,*+hy=*}
QS "R-Phone_Hasatsuon"    {*+ts=*,*+ch=*}
QS "R-Phone_Haretsuon"    {*+b=*,*+by=*,*+d=*,*+dy=*,*+g=*,*+gy=*,*+p=*,*+py=*,*+t=*,*+ty=*,*+k=*,*+ky=*}
QS "R-Phone_Bion"         {*+m=*,*+my=*,*+n=*,*+ny=*,*+N=*}
QS "R-Phone_Han_Boin"     {*+w=*,*+r=*,*+ry=*,*+y=*}

QS "R-Phone_Yuusei_Kuchibiru_Haretsuon" {*+b=*,*+by=*}
QS "R-Phone_Yuusei_Kuchibiru_Bion"      {*+m=*,*+my=*}
QS "R-Phone_Yuusei_Haguki_Masatsuon"    {*+z=*,*+j=*}
QS "R-Phone_Yuusei_Haguki_Haretsuon"    {*+d=*,*+dy=*}
QS "R-Phone_Yuusei_Haguki_Bion"         {*+n=*,*+ny=*,*+N=*}
QS "R-Phone_Yuusei_Haguki_Han_Boin"     {*+r=*,*+ry=*}
QS "R-Phone_Yuusei_Kougai_Haretsuon"    {*+g=*,*+gy=*}
QS "R-Phone_Musei_Kuchibiru_Haretsuon"  {*+p=*,*+py=*}
QS "R-Phone_Musei_Haguki_Masatsuon"     {*+s=*,*+sh=*}
QS "R-Phone_Musei_Haguki_Hasatsuon"     {*+ts=*,*+ch=*}
QS "R-Phone_Musei_Haguki_Haretsuon"     {*+t=*,*+ty=*}
QS "R-Phone_Musei_Kougai_Haretsuon"     {*+k=*,*+ky=*}
QS "R-Phone_Musei_Seimon_Masatsuon"     {*+h=*,*+hy=*}

QS "R-Phone_Youon" {*+by=*,*+my=*,*+j=*,*+dy=*,*+ny=*,*+ry=*,*+gy=*,*+py=*,*+sh=*,*+ch=*,*+ty=*,*+ky=*,*+hy=*}

QS "R-Phone_A"   {*+A=*}
QS "R-Phone_E"   {*+E=*}
QS "R-Phone_I"   {*+I=*}
QS "R-Phone_N"   {*+N=*}
QS "R-Phone_O"   {*+O=*}
QS "R-Phone_U"   {*+U=*}
QS "R-Phone_a"   {*+a=*}
QS "R-Phone_b"   {*+b=*}
QS "R-Phone_by"  {*+by=*}
QS "R-Phone_ch"  {*+ch=*}
QS "R-Phone_cl"  {*+cl=*}
QS "R-Phone_d"   {*+d=*}
QS "R-Phone_dy"  {*+dy=*}
QS "R-Phone_e"   {*+e=*}
QS "R-Phone_f"   {*+f=*}
QS "R-Phone_g"   {*+g=*}
QS "R-Phone_gy"  {*+gy=*}
QS "R-Phone_h"   {*+h=*}
QS "R-Phone_hy"  {*+hy=*}
QS "R-Phone_i"   {*+i=*}
QS "R-Phone_j"   {*+j=*}
QS "R-Phone_k"   {*+k=*}
QS "R-Phone_ky"  {*+ky=*}
QS "R-Phone_m"   {*+m=*}
QS "R-Phone_my"  {*+my=*}
QS "R-Phone_n"   {*+n=*}
QS "R-Phone_ny"  {*+ny=*}
QS "R-Phone_o"   {*+o=*}
QS "R-Phone_p"   {*+p=*}
QS "R-Phone_pau" {*+pau=*}
QS "R-Phone_py"  {*+py=*}
QS "R-Phone_r"   {*+r=*}
QS "R-Phone_ry"  {*+ry=*}
QS "R-Phone_s"   {*+s=*}
QS "R-Phone_sh"  {*+sh=*}
QS "R-Phone_sil" {*+sil=*}
QS "R-Phone_t"   {*+t=*}
QS "R-Phone_ts"  {*+ts=*}
QS "R-Phone_ty"  {*+ty=*}
QS "R-Phone_u"   {*+u=*}
QS "R-Phone_v"   {*+v=*}
QS "R-Phone_w"   {*+w=*}
QS "R-Phone_y"   {*+y=*}
QS "R-Phone_z"   {*+z=*}

QS "RR-Phone_Yuuseion" {*=a/A:*,*=i/A:*,*=u/A:*,*=e/A:*,*=o/A:*,*=v/A:*,*=b/A:*,*=by/A:*,*=m/A:*,*=my/A:*,*=w/A:*,*=z/A:*,*=j/A:*,*=d/A:*,*=dy/A:*,*=n/A:*,*=ny/A:*,*=N/A:*,*=r/A:*,*=ry/A:*,*=g/A:*,*=gy/A:*,*=y/A:*}
QS "RR-Phone_Museion"  {*=A/A:*,*=I/A:*,*=U/A:*,*=E/A:*,*=O/A:*,*=f/A:*,*=p/A:*,*=py/A:*,*=s/A:*,*=sh/A:*,*=ts/A:*,*=ch/A:*,*=t/A:*,*=ty/A:*,*=k/A:*,*=ky/A:*,*=h/A:*,*=hy/A:*}
QS "RR-Phone_Muon"     {*=sil/A:*,*=pau/A:*}

QS "RR-Phone_Boin"                  {*=a/A:*,*=i/A:*,*=u/A:*,*=e/A:*,*=o/A:*,*=A/A:*,*=I/A:*,*=U/A:*,*=E/A:*,*=O/A:*}
QS "RR-Phone_Yuusei_Boin"           {*=a/A:*,*=i/A:*,*=u/A:*,*=e/A:*,*=o/A:*}
QS "RR-Phone_Museika_Boin"          {*=A/A:*,*=I/A:*,*=U/A:*,*=E/A:*,*=O/A:*}
QS "RR-Phone_Maejita_Boin"          {*=i/A:*,*=e/A:*,*=I/A:*,*=E/A:*}
QS "RR-Phone_Yuusei_Maejita_Boin"   {*=i/A:*,*=e/A:*}
QS "RR-Phone_Museika_Maejita_Boin"  {*=I/A:*,*=E/A:*}
QS "RR-Phone_Atojita_Boin"          {*=a/A:*,*=u/A:*,*=o/A:*,*=A/A:*,*=U/A:*,*=O/A:*}
QS "RR-Phone_Yuusei_Atojita_Boin"   {*=a/A:*,*=u/A:*,*=o/A:*}
QS "RR-Phone_Museika_Atojita_Boin"  {*=A/A:*,*=U/A:*,*=O/A:*}
QS "RR-Phone_Sema_Boin"             {*=i/A:*,*=u/A:*,*=I/A:*,*=U/A:*}
QS "RR-Phone_Yuusei_Sema_Boin"      {*=i/A:*,*=u/A:*}
QS "RR-Phone_Museika_Sema_Boin"     {*=I/A:*,*=U/A:*}
QS "RR-Phone_Han_Sema_Boin"         {*=e/A:*,*=o/A:*,*=E/A:*,*=O/A:*}
QS "RR-Phone_Yuusei_Han_Sema_Boin"  {*=e/A:*,*=o/A:*}
QS "RR-Phone_Museika_Han_Sema_Boin" {*=E/A:*,*=O/A:*}
QS "RR-Phone_Hiro_Boin"             {*=a/A:*,*=A/A:*}
QS "RR-Phone_Yuusei_Hiro_Boin"      {*=a/A:*}
QS "RR-Phone_Museika_Hiro_Boin"     {*=A/A:*}

QS "RR-Phone_Boin_A" {*=a/A:*,*=A/A:*}
QS "RR-Phone_Boin_I" {*=i/A:*,*=I/A:*}
QS "RR-Phone_Boin_U" {*=u/A:*,*=U/A:*}
QS "RR-Phone_Boin_E" {*=e/A:*,*=E/A:*}
QS "RR-Phone_Boin_O" {*=o/A:*,*=O/A:*}

QS "RR-Phone_Yuusei_Shiin" {*=v/A:*,*=b/A:*,*=by/A:*,*=m/A:*,*=my/A:*,*=w/A:*,*=z/A:*,*=j/A:*,*=d/A:*,*=dy/A:*,*=n/A:*,*=ny/A:*,*=N/A:*,*=r/A:*,*=ry/A:*,*=g/A:*,*=gy/A:*,*=y/A:*}
QS "RR-Phone_Musei_Shiin"  {*=f/A:*,*=p/A:*,*=py/A:*,*=s/A:*,*=sh/A:*,*=ts/A:*,*=ch/A:*,*=t/A:*,*=ty/A:*,*=k/A:*,*=ky/A:*,*=h/A:*,*=hy/A:*}
QS "RR-Phone_Kuchibiruon"  {*=v/A:*,*=b/A:*,*=by/A:*,*=m/A:*,*=my/A:*,*=w/A:*,*=f/A:*,*=p/A:*,*=py/A:*}
QS "RR-Phone_Hagukion"     {*=z/A:*,*=j/A:*,*=d/A:*,*=dy/A:*,*=n/A:*,*=ny/A:*,*=N/A:*,*=r/A:*,*=ry/A:*,*=s/A:*,*=sh/A:*,*=ts/A:*,*=ch/A:*,*=t/A:*,*=ty/A:*}
QS "RR-Phone_Kougaion"     {*=g/A:*,*=gy/A:*,*=y/A:*,*=k/A:*,*=ky/A:*}
QS "RR-Phone_Seimonon"     {*=h/A:*,*=hy/A:*}
QS "RR-Phone_Masatsuon"    {*=v/A:*,*=z/A:*,*=j/A:*,*=f/A:*,*=s/A:*,*=sh/A:*,*=h/A:*,*=hy/A:*}
QS "RR-Phone_Hasatsuon"    {*=ts/A:*,*=ch/A:*}
QS "RR-Phone_Haretsuon"    {*=b/A:*,*=by/A:*,*=d/A:*,*=dy/A:*,*=g/A:*,*=gy/A:*,*=p/A:*,*=py/A:*,*=t/A:*,*=ty/A:*,*=k/A:*,*=ky/A:*}
QS "RR-Phone_Bion"         {*=m/A:*,*=my/A:*,*=n/A:*,*=ny/A:*,*=N/A:*}
QS "RR-Phone_Han_Boin"     {*=w/A:*,*=r/A:*,*=ry/A:*,*=y/A:*}

QS "RR-Phone_Yuusei_Kuchibiru_Haretsuon" {*=b/A:*,*=by/A:*}
QS "RR-Phone_Yuusei_Kuchibiru_Bion"      {*=m/A:*,*=my/A:*}
QS "RR-Phone_Yuusei_Haguki_Masatsuon"    {*=z/A:*,*=j/A:*}
QS "RR-Phone_Yuusei_Haguki_Haretsuon"    {*=d/A:*,*=dy/A:*}
QS "RR-Phone_Yuusei_Haguki_Bion"         {*=n/A:*,*=ny/A:*,*=N/A:*}
QS "RR-Phone_Yuusei_Haguki_Han_Boin"     {*=r/A:*,*=ry/A:*}
QS "RR-Phone_Yuusei_Kougai_Haretsuon"    {*=g/A:*,*=gy/A:*}
QS "RR-Phone_Musei_Kuchibiru_Haretsuon"  {*=p/A:*,*=py/A:*}
QS "RR-Phone_Musei_Haguki_Masatsuon"     {*=s/A:*,*=sh/A:*}
QS "RR-Phone_Musei_Haguki_Hasatsuon"     {*=ts/A:*,*=ch/A:*}
QS "RR-Phone_Musei_Haguki_Haretsuon"     {*=t/A:*,*=ty/A:*}
QS "RR-Phone_Musei_Kougai_Haretsuon"     {*=k/A:*,*=ky/A:*}
QS "RR-Phone_Musei_Seimon_Masatsuon"     {*=h/A:*,*=hy/A:*}

QS "RR-Phone_Youon" {*=by/A:*,*=my/A:*,*=j/A:*,*=dy/A:*,*=ny/A:*,*=ry/A:*,*=gy/A:*,*=py/A:*,*=sh/A:*,*=ch/A:*,*=ty/A:*,*=ky/A:*,*=hy/A:*}

QS "RR-Phone_A"   {*=A/A:*}
QS "RR-Phone_E"   {*=E/A:*}
QS "RR-Phone_I"   {*=I/A:*}
QS "RR-Phone_N"   {*=N/A:*}
QS "RR-Phone_O"   {*=O/A:*}
QS "RR-Phone_U"   {*=U/A:*}
QS "RR-Phone_a"   {*=a/A:*}
QS "RR-Phone_b"   {*=b/A:*}
QS "RR-Phone_by"  {*=by/A:*}
QS "RR-Phone_ch"  {*=ch/A:*}
QS "RR-Phone_cl"  {*=cl/A:*}
QS "RR-Phone_d"   {*=d/A:*}
QS "RR-Phone_dy"  {*=dy/A:*}
QS "RR-Phone_e"   {*=e/A:*}
QS "RR-Phone_f"   {*=f/A:*}
QS "RR-Phone_g"   {*=g/A:*}
QS "RR-Phone_gy"  {*=gy/A:*}
QS "RR-Phone_h"   {*=h/A:*}
QS "RR-Phone_hy"  {*=hy/A:*}
QS "RR-Phone_i"   {*=i/A:*}
QS "RR-Phone_j"   {*=j/A:*}
QS "RR-Phone_k"   {*=k/A:*}
QS "RR-Phone_ky"  {*=ky/A:*}
QS "RR-Phone_m"   {*=m/A:*}
QS "RR-Phone_my"  {*=my/A:*}
QS "RR-Phone_n"   {*=n/A:*}
QS "RR-Phone_ny"  {*=ny/A:*}
QS "RR-Phone_o"   {*=o/A:*}
QS "RR-Phone_p"   {*=p/A:*}
QS "RR-Phone_pau" {*=pau/A:*}
QS "RR-Phone_py"  {*=py/A:*}
QS "RR-Phone_r"   {*=r/A:*}
QS "RR-Phone_ry"  {*=ry/A:*}
QS "RR-Phone_s"   {*=s/A:*}
QS "RR-Phone_sh"  {*=sh/A:*}
QS "RR-Phone_sil" {*=sil/A:*}
QS "RR-Phone_t"   {*=t/A:*}
QS "RR-Phone_ts"  {*=ts/A:*}
QS "RR-Phone_ty"  {*=ty/A:*}
QS "RR-Phone_u"   {*=u/A:*}
QS "RR-Phone_v"   {*=v/A:*}
QS "RR-Phone_w"   {*=w/A:*}
QS "RR-Phone_y"   {*=y/A:*}
QS "RR-Phone_z"   {*=z/A:*}

(吐槽一下,这个QST标记末尾很多都是日语罗马音,如Boin是指的母音,可以下个百度日语输入法输出来翻译)

根据我的推测,问题集的作用是通过正则表达式匹配label中的内容,为每个发音打上标记

所以问题集的格式就是这样的

QS "标签名" {正则1,正则2,正则3,...,正则n}

通过php写了个生成中文音素部分的question的程序:

<?php
function getArrayString($format, $array){
	$temp = [];
	foreach($array as $one){
		$temp[] = sprintf($format, $one);
	}
	return '{' . implode(',', $temp) . '}';
}
function generatePhones($prefix, $format, $map){
	$txt = '';
	foreach($map as $key => $one){
		$txt .= sprintf('QS "%s-Phone_%s" %s', $prefix, $key, getArrayString($format, $one)) . "\n";
	}
	return $txt;
}
function generatePhoneList($prefix, $format, $map){
	$txt = '';
	foreach($map as $one){
		$txt .= sprintf('QS "%s-Phone_%s" %s', $prefix, $one, getArrayString($format, [$one])) . "\n";
	}
	return $txt;
}
$phoneMap = [
	'Voiced_Sounds' => ['a', 'o', 'e', 'e2', 'i', 'u', 'v', 'i', 'i2', 'i3', 'er', 'ai', 'ei', 'ao', 'ou', 'ia', 'ie', 'ua', 'uo', 've', 'iao', 'iou', 'uai', 'uei', 'an', 'en', 'in', 'vn', 'ian', 'uan', 'uen', 'van', 'ang', 'eng', 'ing', 'ong', 'iang', 'iong', 'uang', 'ueng', 'b', 'd', 'g', 'm', 'n', 'l', 'j', 'zh', 'z', 'w', 'y', 'r'],
	'Unvoiced_Sounds' => ['p', 't', 'k', 'f', 'h', 'x', 'ch', 'sh', 'c', 's'],
	'Vowels' => ['a', 'o', 'e', 'e2', 'i', 'u', 'v', 'i', 'i2', 'i3', 'er', 'ai', 'ei', 'ao', 'ou', 'ia', 'ie', 'ua', 'uo', 've', 'iao', 'iou', 'uai', 'uei', 'an', 'en', 'in', 'vn', 'ian', 'uan', 'uen', 'van', 'ang', 'eng', 'ing', 'ong', 'iang', 'iong', 'uang', 'ueng'],
	'Voiced_Consonants' => ['b', 'd', 'g', 'm', 'n', 'l', 'j', 'zh', 'z', 'w', 'y', 'r'],
	'Unvoiced_Consonantss' => ['p', 't', 'k', 'f', 'h', 'x', 'ch', 'sh', 'c', 's'],
	'Plosive_Consonant' => ['b', 'd', 'p', 't', 'k'],
	'Spirant_Consonants' => ['x', 'ch', 'sh', 'c', 's'],
	'Vowel_Consonants' => ['w', 'y'],
	'Lateral_Consonants' => ['g', 'f', 'h'],
	'Semivowel_Consonants' => ['m', 'n', 'j', 'zh', 'z', 'r'],
	'Slient' => ['sil', 'pau'],
];
$genMap = ['a', 'o', 'e', 'e2', 'i', 'u', 'v', 'i', 'i2', 'i3', 'er', 'ai', 'ei', 'ao', 'ou', 'ia', 'ie', 'ua', 'uo', 've', 'iao', 'iou', 'uai', 'uei', 'an', 'en', 'in', 'vn', 'ian', 'uan', 'uen', 'van', 'ang', 'eng', 'ing', 'ong', 'iang', 'iong', 'uang', 'ueng', 'b', 'd', 'g', 'm', 'n', 'l', 'j', 'zh', 'z', 'w', 'y', 'r', 'p', 't', 'k', 'f', 'h', 'x', 'ch', 'sh', 'c', 's'];
$ret = '';
$ret .= generatePhones('LL', '%s^*', $phoneMap) . "\n";
$ret .= generatePhoneList('LL', '%s^*', $genMap) . "\n\n";
$ret .= generatePhones('L', '*^%s-*', $phoneMap) . "\n";
$ret .= generatePhoneList('L', '*^%s-*', $genMap) . "\n\n";
$ret .= generatePhones('C', '*-%s+*', $phoneMap) . "\n";
$ret .= generatePhoneList('C', '*-%s+*', $genMap) . "\n\n";
$ret .= generatePhones('R', '*+%s=*', $phoneMap) . "\n";
$ret .= generatePhoneList('R', '*+%s=*', $genMap) . "\n\n";
$ret .= generatePhones('RR', '*=%s_*', $phoneMap) . "\n";
$ret .= generatePhoneList('RR', '*_%s/A:*', $genMap);
echo $ret;

有兴趣可以到 https://tool.lu/coderunner/ 运行看看

下一篇:解析question文件里对于其他标记的段落(未完成)

猜你喜欢

转载自blog.csdn.net/at13358172372/article/details/80493378