AWs-309 切韵拟音J

《切韵》记录了南北朝时期标准汉语的音系。这一时期的标准汉语一般称为早期中古汉语(Early Middle Chinese),因此切韵拟音J(Qieyun Reconstruction J)实际上就是早期中古汉语的拟音。J为拟音的版本号,代表2020年,来自unt的字母纪年法(Alphabetic Year Numbering)。

话少说,放码过(Talk is cheap. Show me the code)。切韵拟音J一改以往中古汉语拟音以音值和证据为导向的方式,而是以音系和工程为导向,码后地实现切韵拟音的流水线生产。文章分成两篇先后发布:

  • 音系规则和代码实现
  • 语音描写和拟音说明

切韵拟音J已在《切韵》音系自动推导器中上线,可选择unt切韻擬音J后点击使用。特别感谢 思無邪SyiMyuZya三日月 綾香 的帮助支持。

音系规则和代码实现

因为音位、区别性特征(distinctive feature)、音系规则(phonological rule)等已在推导方案代码中用 /** ... */ 式注释写出,所以下面直接摘录推导方案完整代码,但是把这些注释打开到正文中以便阅读。想阅读音系部分的人直接忽略下文代码部分,只看正文和注释部分即可。原始代码见unt_j.js

const is = (x) => 音韻地位.屬於(x.replace(/ /g, ''));

下面语音学术语对应的音韵学术语将用〈全角尖括号〉在语音学术语后注明。代码中的流程控制开关用绿框表明。音系规则代号用紫底表明。

一、流程控制开关

音韵地位对应音位开关:

开关默认说明
肴豪韵韵核归为低元音关闭:e͇w əw(实现为 œ͇w ʌw),打开:a͇w aw

音系规则开关:

开关默认说明
祭泰夬废韵尾推导为ɹ4关闭:-j,打开:-ɹ
要推导松元音5普通用户请保持打开,否则后面一些推导可能出错
要推导二合元音6关闭:iə ɨə ia ɨa,打开:iɛ ɨɜ iæ ɨɐ
要推导a7关闭:a,打开:a ɑ
庄组臻摄开口推导为ɹ̩9关闭:in,打开:ɹ̩n。不包括合口小韵
豪覃韵韵核推导为ʌ10关闭:əw əm,打开:ʌw ʌm
肴凡韵韵核推导为œ11关闭:e͇w βəm,打开:œ͇w βœm
精三寅合口介音推导为ɥ12关闭:sʷɹ-,打开:sʷɥ-。关闭
蒸幽韵合口增生ɹ滑音13,关闭:pîŋ,打开:pɹîŋ
云母推导为ɹ14关闭:ɣɹ- ɣj̈-,打开:ɹ-。不论三 B 还是三 C
见系非三推导为软腭后音15包含匣母
晓母非三推导为软腭后音16按常理,需要见系非三推导为软腭后音打开才能打开
通江宕摄推导为软腭后音17如果要推导a没有打开,那么不推导宕摄韵尾
侯韵裂化为ɘu18关闭:u,打开:ɘu
精组非后高元音省略介音21,关闭:tsɹʉ̂ɜɴ,打开:tsʉ̂ɜɴ

后处理开关:

开关默认说明
知组写成卷舌塞音关闭:tɹ,打开:二等 ʈ、三等 ʈɹ
中元音写成半低元音关闭:e o,打开:ɛ ɔ。不转换ə
ɑ写成a
半元音介音写成元音
半元音韵尾写成元音
二等元音写成r音钩
二等元音写成双下横线关闭:下等号a͇(U+0347),打开:双下横线a̳(U+0333)。一些字体(如Times New Roman、Arial)把这两个附加符号弄反了,为了显示的效果要打开。只在二等元音写成r音钩关闭时有效

声调开关:

开关默认说明
声调分阴阳
声调写成五度标记
声调附加符号写在音节前只在声调写成五度标记关闭时有效

二、音节结构

切韵拟音J的音节结构是CʷGVCᵀ。

Cʷ:辅音或唇化辅音,作为声母(initial)
G:滑音(glide),作为介音(medial)
V:单元音或二合元音,作为韵核(nucleus)。成音节辅音[ɹ̩]也可以作韵核〈臻韵〉
C:辅音,作为韵尾(coda)。韵核和韵尾加在一起叫作韵基(rime)
ᵀ:声调(tone)

介音和韵尾可有可无,声母、韵核、声调是必须出现的。

三、音韵地位对应音位(及其代码实现)和区别性特征

1. 辅音的特征

发声态和调音方式:

[±voi]带声(voice)
[±sg]展声门(spread glottis),即辅音送气。注意[h]〈晓母三等〉按照理论是[+sg],但本文为了和对应,算作[−sg](也有人将晓母归次清)
[±son]响音(sonorant)性,包括鼻音和近音(本文的响音不包含元音)。相反的[−son]是阻音(obstruent)
[±stop]塞音性,包括鼻塞音(即鼻音)和口塞音(即爆发音和塞擦音)。包含鼻音的严格来说应该叫 occlusive 而非 stop,本文从简直接用[±stop]
[±fric]擦音(fricative)性。本文将塞擦音也算入[+fric],不使用现代音系学常用的[±delayed release](延缓除阻)

调音部位:

[LAB]唇(labial)
[±rnd]圆唇(round),包括唇化辅音和圆唇元音
[COR]舌冠(coronal),即锐音(acute)。本文为了简便将硬腭辅音也算入舌冠音。本文从简仍然使用音、钝的叫法,但不用[∓grave]
[±ant]前部(anterior)。前部锐音包括齿–龈、龈,后部锐音包括龈后、卷舌、龈–腭等
[±r]r色彩
[DOR]舌面(dorsal)
[±high]高,对辅音而言[DOR, +high]是软腭音,[DOR, −high]是小舌音,正好符合三等、非三等之分。本文将软腭音分为软腭前音(prevelar)、软腭后音(postvelar)两组,分别用软腭音和小舌音的记号表示,通过见系非三推导为软腭后音晓母非三推导为软腭后音通江宕摄推导为软腭后音控制。

2. 音韵地位对应辅音音位

详见下面代码实现。

// 函数:将声母的音韵地位转换为音位,不含开合信息
// 介音音位和条件变体也在下面列出,以说明其区别性特征,尽管在代码中用不到
function getInitialWithoutRounding() {
  return {
 // 不送气     送气       浊阻音     浊响音
 // 清阻音     清阻音
 //〈全清〉   〈次清〉   〈全浊〉   〈次浊〉
 // −voi       −voi       +voi       +voi
 // −sg        +sg        −sg        −sg
 // −son       −son       −son       +son
    幫: 'p',   滂: 'pʰ',  並: 'b',   明: 'm',  // +stop, −fric; LAB            双唇塞音  〈帮组/唇音〉
                              帮三C介音: 'β',  // −stop, −fric; LAB            双唇近音
    端: 't',   透: 'tʰ',  定: 'd',   泥: 'n',  // +stop, −fric; COR, +ant      齿龈塞音  〈端组/舌头音〉
    精: 'ts',  清: 'tsʰ', 從: 'dz',            // +stop, +fric; COR, +ant      齿龈塞擦音〈精组/齿头音〉
    心: 's',              邪: 'z',             // −stop, +fric; COR, +ant      齿龈擦音  〈精组/齿头音〉
                                     來: 'l',  // −stop, −fric; COR, +ant      齿龈近音  〈来母/半舌音〉
    知: 'tɹ',  徹: 'tɹʰ', 澄: 'dɹ',  孃: 'nɹ', // +stop, −fric; COR, −ant, +r  卷舌塞音  〈知组/舌上音〉
    莊: 'tʂ',  初: 'tʂʰ', 崇: 'dʐ',            // +stop, +fric; COR, −ant, +r  卷舌塞擦音〈庄组/正齿音〉
    生: 'ʂ',              俟: 'ʐ',             // −stop, +fric; COR, −ant, +r  卷舌擦音  〈庄组/正齿音〉
                              钝三B介音: 'ɹ',  // −stop, −fric; COR, −ant, +r  龈后近音
                                     日: 'ɲ',  // +stop, −fric; COR, −ant, −r  龈腭塞音  〈日母/半齿音〉
    章: 'tɕ',  昌: 'tɕʰ', 常: 'dʑ',            // +stop, +fric; COR, −ant, −r  龈腭塞擦音〈章组/正齿音〉
    書: 'ɕ',              船: 'ʑ',             // −stop, +fric; COR, −ant, −r  龈腭擦音  〈章组/正齿音〉
                                     以: 'j',  // −stop, −fric; COR, −ant, −r  硬腭近音  〈以母/喉音〉
    見: 'k',   溪: 'kʰ',  羣: 'ɡ',   疑: 'ŋ',  // +stop, −fric; DOR (+high)    软腭前塞音〈见组/牙音〉
                          匣: 'ɣ',   云: 'ɣ',  // −stop, +fric; DOR (+high)    软腭前擦音〈影组/喉音〉
                              见三C介音: 'j̈',  // −stop, −fric; DOR (+high)    软腭前近音
   見1: 'q',  溪1: 'qʰ',            疑1: 'ɴ',  // +stop, −fric; DOR (−high)    软腭后塞音【带1的是非三等变体】
   曉1: 'χ',             匣1: 'ʁ',             // −stop, +fric; DOR (−high)    软腭后擦音
    影: 'ʔ',                                   // +stop, −fric                 喉塞音    〈影组/喉音〉
    曉: 'h',                                   // −stop, +fric                 喉擦音    〈影组/喉音〉
  }[音韻地位.母];
}
const is全清 = is('幫端精心知莊生章書見影曉母'); // [−voi, −sg, −son]
const is次清 = is('滂透清 徹初 昌 溪  母'); // [−voi, +sg, −son]
const is全浊 = is('並定從邪澄崇俟常船羣 匣母'); // [+voi, −sg, −son]
const is次浊 = is('明泥來 孃  日以疑云 母'); // [+voi, −sg, +son]
const is清 = is全清 || is次清;
// 云母已按推导后的结果 [ɹ] 算入次浊

const is锐前 = is('端精組 或 來母 一二四等'); // [COR, +ant]
const is锐后 = is('知莊章組 或 日以母');      // [COR, −ant]
const is锐 = is锐前 || is锐后 || is('來母');  // [COR]
// 来母按推导后只有非三等 [l] 算入前部锐音,但来母三等 [lɹ] 不算前部也不算后部
// 函数:将声母的音韵地位转换为音位,包含开合信息
function getInitial() {
  let result = getInitialWithoutRounding();
  // 音韵学术语开合对应 [±rnd]。如果主要调音部位就是 [LAB]〈帮组〉,那么本文一律视为 [−rnd]
  // 没有开合对立的韵母一般视为开口,但虞韵本文视为鱼韵对应的合口;平行地,钟韵也视为合口
  // 𠑆𦑣䎎小韵算合口
  if (is('合口 或 虞鍾韻 或 知組 嚴凡韻') && !is('幫組')) { // [+rnd]
    result += 'ʷ';
    result = result.replace('ʰʷ', 'ʷʰ');
  } // else [−rnd]
  return result;
}
// 函数:将软腭前音转换为软腭后音
function velarToUvular(consonant) {
  switch (consonant[0]) {
    case 'k': return 'q' + consonant.substring(1);
    case 'ɡ': return 'ɢ' + consonant.substring(1);
    case 'ŋ': return 'ɴ' + consonant.substring(1);
    case 'ɣ': return 'ʁ' + consonant.substring(1);
  }
  return consonant;
}
// 函数:将知组转换为卷舌塞音
function retroflexToStop(consonant) {
  switch (consonant.substring(0, 2)) {
    case 'tɹ': return 'ʈ' + consonant.substring(2);
    case 'dɹ': return 'ɖ' + consonant.substring(2);
    case 'nɹ': return 'ɳ' + consonant.substring(2);
  }
  return consonant;
}
// 函数:将介音的音韵地位转换为音位,不含开合信息
function getGlide() {
  if (is('云母 灰韻')) return 'ɹ'; // 小韵

  // 一二四等无介音
  if (!is('三等')) return '';

  // 锐音声母三等介音一律用 /ɹ/
  if (is锐) return 'ɹ';

  // 钝音声母分三 A、B、C
  if (is('重紐B類 或 庚臻韻')) return 'ɹ';
  if ('抑𡊁烋'.includes(字頭)) return 'ɹ'; // 蒸韵𡊁二字、幽韵字归三 B
  if (is('云母 支脂祭眞臻仙宵麻庚清蒸幽侵鹽韻')) return 'ɹ'; // 云母前元音韵归三 B
  if (is('重紐A類 或 麻蒸清幽韻')) return 'j'; // 三 A
  return 'j̈'; // 三 C
}
// 函数:将韵尾的音韵地位转换为音位
function getCoda() {
  if (is('通江宕梗曾攝')) return is('入聲') ? 'k' : 'ŋ';
  if (is('深咸攝'))       return is('入聲') ? 'p' : 'm';
  if (is('臻山攝'))       return is('入聲') ? 't' : 'n';
  if (is('佳韻'))         return ''; // 从蟹摄中排除无韵尾的佳韵
  if (is('微韻 或 蟹攝')) return 'j';
  if (is('幽韻 或 效攝')) return 'w';
  return '';
}

3. 元音的特征

[±high]
[±low]
[±front]
[±back]
[±rnd]圆唇(round)
[±tense]紧。三子韵及其对应的三寅韵是松元音,三丑韵及其对应的三寅韵是紧元音,非三等韵都是紧元音
[±divII]二等(division-II)。本文不指定它的具体语音实现

列表如下。[ʉ] 是音位变体,也加入下表

4. 音韵地位对应元音音位

详见下面代码实现。

// 函数:将韵核的音韵地位转换为音位
function getNucleus() {
  // 松元音
  // 韵尾: m     j   n       w
  if (is('侵  微 眞臻欣文 韻')) return 'ɪ'; // +high, −tense
  if (is('鹽嚴凡祭廢仙 元 宵韻')) return 'ɜ'; // −high, −tense

  // 紧元音
  if (選項.肴豪韵韵核归为低元音) {
    if (is('肴韻')) return 'a͇';
    if (is('豪韻')) return 'a';
  }
  // 脂韵、尤韵的韵基也可分别视为 /ɪj/、/ɪw/,本文从简直接视为紧元音 /i/、/u/
  // 韵尾:   ŋ m j n w
  if (is('脂蒸   幽韻')) return 'i'; // +high, −low, +front, −back, −rnd, +tense
  if (is('之     韻')) return 'ɨ'; // +high, −low, −front, −back, −rnd, +tense
  if (is('尤東   侯韻')) return 'u'; // +high, −low, −front, +back, +rnd, +tense
  if (is('佳耕咸皆山肴韻')) return 'e͇'; // −high, −low, +divII,        −rnd, +tense
  if (is(' 江    韻')) return 'œ͇'; // −high, −low, +divII,        +rnd, +tense
  if (is(' 青添齊先蕭韻')) return 'e'; // −high, −low, +front, −back, −rnd, +tense
  if (is(' 登覃咍痕豪韻')) return 'ə'; // −high, −low, +front, −back, −rnd, +tense
  if (is('模冬 灰魂 韻')) return 'o'; // −high, −low, +front, −back, −rnd, +tense
  if (is('麻庚銜夬刪 韻 二等')) return 'a͇';
                                        // −high, +low, +divII,        −rnd, +tense
  if (is('麻庚    韻 三等') ||
      is('歌唐談泰寒 韻')) return 'a'; // −high, +low, −front, −back, −rnd, +tense

  // 二合元音
  if (is('支韻'))     return 'iə'; // +front, −back, −rnd, +tense
  if (is('魚虞鍾韻')) return 'ɨə'; // −front, −back, −rnd, +tense
  if (is('清韻'))     return 'ia'; // +front, −back, −rnd, +tense
  if (is('陽韻'))     return 'ɨa'; // +front, −back, −rnd, +tense

  throw new Error('无元音规则');
}
// 函数:将半元音转换为元音
function semivowelToVowel(consonant) {
  switch (consonant) {
    case 'j': return 'i';
    case 'ɥ': return 'y';
    case 'j̈': return 'ɨ';
    case 'ɥ̈': return 'ʉ';
    case 'w': return 'u';
  }
  return consonant;
}

5. 声调

本文从简,声调无视音系层级范式,直接转换为最终形式。
声调写成五度标记声调分阴阳声调附加符号写在音节前 也在这里应用。详见下面代码实现。

// 函数:将声调的音韵地位转换为语音
function getTone() {
  if (選項.声调写成五度标记) {
    if (選項.声调分阴阳) {
      if (is('平聲')) return is清    ? '˦˧' : '˨˩';
      if (is('上聲')) return !is全浊 ? '˦˥' : '˨˧';
      if (is('去聲')) return is清    ? '˥˦˥' : '˧˨˧';
      if (is('入聲')) return !is全浊 ? '˥' : '˨˩';
    } else {
      if (is('平聲')) return '˧˩';
      if (is('上聲')) return '˧˥';
      if (is('去聲')) return '˦˨˦';
      if (is('入聲')) return '˧';
    }
  } else {
    if (選項.声调分阴阳) {
      if (is('平聲')) return is清    ? '̂' : '̏';
      if (is('上聲')) return !is全浊 ? '̋' : '̌';
      if (is('去聲')) return is清    ? '᷇' : '᷅';
      if (is('入聲')) return !is全浊 ? '́' : '̀';
    } else {
      if (is('平聲')) return 選項.声调附加符号写在音节前 ? 'ˋ' : '̀'; // 写在音节前时直接用独立的附加符号
      if (is('上聲')) return 選項.声调附加符号写在音节前 ? 'ˊ' : '́';
      if (is('去聲')) return 選項.声调附加符号写在音节前 ? 'ˉ' : '̄';
      if (is('入聲')) return '';
    }
  }
  throw new Error('无声调规则');
}

四、音系规则(及其代码实现)

// 获取音节的各部分
let initial = getInitial();
let glide = getGlide();
let nucleus = getNucleus();
let coda = getCoda();
let tone = getTone();

1 介音在后部锐音后被声母吸收而删除

/**
  G -> ∅ / [COR, −ant]__
*/
if (is('知莊章組 或 日以母')) glide = '';

2 舌面介音被唇音或唇化声母同化〈帮组或合口三 A、C〉

/**
  j -> ɥ / [+rnd]__
  j̈ -> ɥ̈ / [+rnd]__
       β / [LAB, −rnd]__
*/
if (initial.includes('ʷ')) {
  glide = glide.replace('j', 'ɥ');
} else if (is('幫組')) {
  if (glide == 'j̈') glide = 'β';
}

3 唇化的声母j实现为ɥ〈以母合口〉

/**
  jʷ -> ɥ
*/
if (initial == 'jʷ') initial = 'ɥ';

4 j韵尾在低元音和中松元音后〈祭泰夬废〉实现为 ɹ

/**
  j -> ɹ / {[+low], [−high, −tense]}__
*/
if (選項.祭泰夬废韵尾推导为ɹ && is('去聲')) {
  if (nucleus.includes('a') || nucleus == 'ɜ') {
    if (coda == 'j') coda = 'ɹ';
  }
}

5 松元音的前后被前接辅音的锐钝同化

/**
  ɪ -> i / [COR]__
       ɨ / 其他环境
  ɜ -> e / [COR]__
       ə / 其他环境
*/
if (選項.要推导松元音) {
  if ([...'ɹjɥ'].includes(glide) || is锐) { // 不包含 glide 为零的情况,所以用 [...'ɹjɥ']
    if (nucleus == 'ɪ') nucleus = 'i';
    if (nucleus == 'ɜ') nucleus = 'e';
  } else {
    if (nucleus == 'ɪ') nucleus = 'ɨ';
    if (nucleus == 'ɜ') nucleus = 'ə';
  }
}

6 二合元音的后滑音(off-glide)部分被元音的前后同化

/**
  ə -> ɛ / i__
    -> ɜ / ɨ__
  a -> æ / i__
    -> ɐ / ɨ__
*/
if (選項.要推导二合元音) {
  if (nucleus == 'iə') nucleus = 'iɛ';
  if (nucleus == 'ɨə') nucleus = 'ɨɜ';
  if (nucleus == 'ia') nucleus = 'iæ';
  if (nucleus == 'ɨa') nucleus = 'ɨɐ';
}

7 一等韵的韵核/a/实现为[ɑ]
三等韵的韵核/a/在锐音后实现为[a],但锐音是唇化〈歌三合〉的除外;在钝音后〈歌韵〉实现为[ɑ]

/**
  a -> a / {[COR, +ant, −rnd]G, [COR, −ant]}__
    -> ɑ / 其他环境
*/
if (選項.要推导a && nucleus == 'a') {
  nucleus = 'ɑ';
  if (is锐 && glide && !initial.includes('ʷ') || is锐后 || !is锐 && [...'ɹjɥ'].includes(glide)) {
    // 音系规则本来不限制韵尾,但章组谈韵有两小韵,需要归到 ɑ,所以在这里过滤
    if ('ŋk'.includes(coda)) nucleus = 'a'; // 注意 'ŋk'.includes(coda) 包含的是 ŋ、k 和零韵尾这 3 种
  }
}

8 央高元音被唇音或唇化声母同化(包括二合元音ɨɜ -> ʉɜ〈虞钟阳韵〉

/**
  ɨ -> ʉ / [LAB]__
*/
if (initial.includes('ʷ') || initial == 'ɥ' || glide == 'β') {
  nucleus = nucleus.replace('ɨ', 'ʉ');
}

9 i在卷舌咝音和龈韵尾之间〈庄组真臻欣韵开口〉舌冠化为ɹ̩

/**
  i -> ɹ̩ / [COR, −ant, +r, +fric, −rnd]__[COR]
*/
if (選項.庄组臻摄开口推导为ɹ̩ && is('莊組') && !initial.includes('ʷ') && [...'nt'].includes(coda)) {
  if (nucleus == 'i') nucleus = 'ɹ̩';
}

10 零介音、唇音或唇化韵尾前的ə〈豪覃韵〉实现为ʌ

/**
  ə -> ʌ / 非G__[LAB]
*/
if (選項.豪覃韵韵核推导为ʌ && !glide && [...'mpw'].includes(coda)) {
  if (nucleus == 'ə') nucleus = 'ʌ';
}

11 e͇w〈肴韵〉、βəm〈凡韵〉的韵核实现为圆唇元音

/**
  e͇      -> œ͇ / __w
  {e, ə} -> œ / [LAB]G__m
*/
// 先转换𠑆𦑣䎎小韵,它们属于凡韵
if (is锐 && initial.includes('ʷ') && [...'mp'].includes(coda)) {
  if (nucleus == 'e') nucleus = 'ə';
}
if (選項.肴凡韵韵核推导为œ) {
  if (nucleus == 'e͇' && coda == 'w') nucleus = 'œ͇';
  if (nucleus == 'ə' && (initial.includes('ʷ') || is('幫組')) && [...'mp'].includes(coda)) nucleus = 'œ';
}

12 齿龈阻音〈端精组〉后的介音接前元音时被同化(圆唇时可选)

/**
  G -> j / [COR, +ant, −son, −rnd]__[+front]
       ɥ / [COR, +ant, −son, +rnd]__[+front]
*/
if (is锐前 && 'ieæa'.includes(nucleus[0])) {
  if (!initial.includes('ʷ')) {
    if (glide) glide = 'j';
  } else if (選項.精三寅合口介音推导为ɥ) {
    if (glide) glide = 'ɥ';
  }
}

13 i在唇音或唇化声母和软腭韵尾之间〈蒸幽韵〉增生ɹ滑音

/**
  G -> ɹ / [LAB]__i[DOR]
*/
if (選項.蒸幽韵合口增生ɹ滑音 && (initial.includes('ʷ') || is('幫組')) && nucleus == 'i' && [...'ŋkw'].includes(coda)) {
  glide = 'ɹ';
}

14 接介音的ɣ〈云母〉实现为ɹ

/**
  ɣG -> ɹ
  ɣʷG -> ɹʷ
*/
if (選項.云母推导为ɹ && initial.includes('ɣ') && glide) {
  initial = initial.replace('ɣ', 'ɹ'); // ɹ 视为声母
  glide = '';
}

15 软腭音直接后接元音时〈见系和匣母非三等〉实现为软腭后音

/**
  [DOR] -> [−high] / __V
*/
if (選項.见系非三推导为软腭后音 && !glide) {
  initial = velarToUvular(initial);
}

16 h直接后接元音时〈晓母非三等〉实现为软腭后音

/**
  h -> χ / __V
*/
if (選項.晓母非三推导为软腭后音 && !glide) {
  initial = initial.replace('h', 'χ');
}

17 圆唇元音和低非前元音后的软腭韵尾〈通江宕摄〉实现为软腭后音

/**
  [DOR] -> [+back] / {[+round], [+low, −front]}__
*/
if (選項.通江宕摄推导为软腭后音) {
  if ('ʉuoœɑ'.includes(nucleus[0]) || (nucleus.includes('ɐ') && 選項.要推导a)) {
    coda = velarToUvular(coda);
  }
}

18 u在钝音声母和无介音齿龈声母后〈侯韵〉裂化

/**
  u -> u / [COR, −ant]__#
       ɘu / 其他__#
*/
if (選項.侯韵裂化为ɘu && nucleus == 'u' && !coda) {
  nucleus = 'ɘu';
  if (is锐后 || is('云母') || glide) nucleus = 'u';
}

19 高元音 + 半元音韵尾〈微幽韵〉实现为二合元音

/**
  j -> i / [+high]__
  w -> u / [+high]__
*/
if ('iɨʉuɪ'.includes(nucleus)) {
  if (coda == 'j') coda = 'i';
  if (coda == 'w') coda = 'u';
}

20 移除与韵核同部位介音

/**
  [DOR, +son] -> ∅ / C__[+high, −back]
*/
if ('iɨʉ'.includes(nucleus[0])) {
  if (['j', 'ɥ', 'j̈', 'ɥ̈'].includes(glide)) glide = '';
}

21 齿龈音〈端精组〉接非后高元音时省略介音

/**
  {j, ɥ} -> ∅ / [COR, +ant, −son]__[+high, +front, −back]
  G      -> ∅ / [COR, +ant, −son]__[+high, −front, −back]
*/
if (選項.精组非后高元音省略介音 && is锐前) {
  if (nucleus[0] == 'i' && [...'jɥ'].includes(glide)) glide = '';
  if ('ɨʉ'.includes(nucleus[0])) glide = '';
}

五、后处理的代码实现

if (選項.知组写成卷舌塞音 && is('知組 或 來母')) {
  initial = retroflexToStop(initial);
  if (is('知組 三等')) glide = 'ɹ'; // 还原出三等介音
  if ('iɨʉ'.includes(nucleus[0])) glide = ''; // 再次应用音系规则 (21)。平行地,也要应用给来母
}

if (選項.中元音写成半低元音) {
  nucleus = nucleus.replace('e', 'ɛ');
  nucleus = nucleus.replace('o', 'ɔ');
}

if (選項.ɑ写成a) {
  nucleus = nucleus.replace('ɑ', 'a');
}

if (選項.半元音介音写成元音) {
  glide = semivowelToVowel(glide);
}

if (選項.半元音韵尾写成元音) {
  coda = semivowelToVowel(coda);
}

if (is('二等')) {
  if (選項.二等元音写成r音钩) {
    nucleus = nucleus.replace('͇', '˞');
  } else if (選項.二等元音写成双下横线) {
    nucleus = nucleus.replace('͇', '̳');
  }
}
if (選項.声调写成五度标记) return initial + glide + nucleus + coda + tone;

if (選項.声调附加符号写在音节前) {
  if (選項.声调分阴阳) return '\xA0' + tone + initial + glide + nucleus + coda; // 需要用无中断空格(U+00A0),否则位于行首的空格可能被浏览器忽略
  return tone + initial + glide + nucleus + coda;
}

// 声调附加符号写在韵核主体上
if (nucleus.includes('͇') || nucleus.includes('̳') || nucleus == 'ɘu' || nucleus == 'ɹ̩') return initial + glide + nucleus + tone + coda;
return initial + glide + nucleus[0] + tone + nucleus.substring(1) + coda;

知乎专栏·凭风苑中的本章:切韵拟音J:音系规则和代码实现 – 知乎

语音描写

一、辅音

双唇齿龈卷舌龈腭软腭前软腭后
爆发音ptkqʔ
tɹʰ
bdɡ
塞擦音ts
tsʰtʂʰtɕʰ
dz
擦音sʂɕχh
zʐʑʁ
鼻音mnɲŋɴ
近音(β)lɹj ɥ(j̈ ɥ̈)(w)

除双唇音和w外,所有辅音都有对应的唇化辅音〈合口〉(加ʷ;特别地,j、j̈对应的唇化辅音是ɥ、ɥ̈(2~3))。除ɥ、ɥ̈外,唇化辅音未列入表中。β、j̈、ɥ̈只能作介音,w只能作韵尾,在表格中加括号。

音节首辅音

首先把锐音(钝音、锐音是什么?)的被动调音部位分布列成表,先一目了然再介绍:

齿–龈、龈卷舌龈后龈–腭硬腭
t
ts
nɲɲ
(ɹ)ɹj
lll

齿龈〈端精组〉指齿–龈音(denti-alveolar)或龈音(alveolar),梦(YM1-J8.10-1,见本文附录)表明齿龈音后无介音时倾向于舌尖音(apical,s̺、z̺等),有介音时倾向于舌叶音(laminal,s̻、z̻等)。

龈腭指龈后音(postalveolar)、龈–腭音(alveolo-palatal)或硬腭音。tɕ、tɕʰ、dʑ、ɕ、ʑ〈章组〉是龈–腭音或龈后音。ɲ〈日母〉是硬腭音或龈–腭音。j、ɥ〈以母、唇牙喉三A介音〉是硬腭音。r音(rhotic)ɹ〈云母、唇牙喉三B介音〉类似英语的r,既可以是龈后的,也可以是舌面隆起的(bunched-r,扩展国际音标写作[ɹ̈],近乎是[ɧ]对应的浊近音),或是其他音色相似的姿态。ɹ作声母时多是唇化的;作介音时是否唇化取决于声母,本文一律写ɹ,不额外加ʷ。但齿龈咝音〈精组〉后的ɹ〈精组三等合口和三C介音〉是普通的舌叶龈近音,与声母同部位,没有r色彩(在上表中加括号)。

tɹ、tɹʰ、dɹ、nɹ〈知组〉是卷舌音(retroflex)或龈后音,它们是爆发音和鼻音,或非咝塞擦音和擦除阻鼻音;也可以写成ʈ、ʈʰ、ɖ、ɳ知组写成卷舌塞音)。和ɹ一样,它们可能通过舌面隆起而非卷起舌尖来实现r色彩(tɹ中的ɹ正好可以暗示这一点,所以本文不用ʈ、ʈʰ、ɖ、ɳ的写法),但不是真正的硬腭音(所以本文排除了这个回答提出的c˞、c˞ʰ、ɟ˞、ɲ˞写法)。tʂ、tʂʰ、dʐ、ʂ、ʐ〈庄组〉是卷舌音。l〈来母〉是齿–龈音、龈音、龈后音或卷舌音。

软腭分为软腭前音(介于软腭和硬腭之间)和软腭后音(介于软腭和小舌之间),后者本文用小舌辅音表示。二者没有对立(15~17)。软腭后音ɴ、q作韵尾时有一定的唇化。h也可以是软腭音[x]。

介音处可以出现j/ɥ、ɹ、j̈/β/ɥ̈。β是双唇近音[β̞],是/j̈/在双唇辅音后的变体(2),构成音节首pβ、pʰβ、bβ、mβ〈帮组三C〉,它们也可以是塞擦音。ɥ̈是/j̈/在唇化辅音后的变体(2),j̈ 和 ɥ̈ 只出现在软腭前音和喉音后〈见系三C介音〉。卷舌、龈腭音〈知庄章组〉后不接介音(1)。当韵核(nucleus)和介音部位相同时,省写介音,如kɨ̂n不必写kj̈ɨ̂n(20~21)。

音节尾辅音

韵尾处可以出现j/ɹ、w、m/p、n/t、ŋ/k、ɴ/q,其中鼻音和爆发音都和现代标准汉语一样是无闻除阻(no audible release,m̚、p̚等)的。ɹ作韵尾时可以是[j](4),具体部位需要进一步的实验语音学研究。t作韵尾时可以是闪音(flap)的[ɾ],可能是某种北方流行口音。软腭韵尾前可以增生一个同部位滑音,如pə́k可以是[pə́j̈k]、tsôɴ可以是[tsôwɴ]。爆发音作韵尾时可能同时伴随喉部紧张,需要进一步的实验语音学研究。

成音节辅音

ɹ̩,带r色彩的龈后音。例字:臻tʂɹ̩̂n、栉tʂɹ̩́t。仅出现在非唇化卷舌咝音声母〈庄组开口〉和齿龈韵尾〈臻摄〉之间,跟i互补(9)。

辅音例字

帮pâɴ端tʷân知tɹîɛkɨ̂见qe᷇n影ʔɹa̋ŋ
滂pʰâɴ透tʰɘu᷇彻tɹʰétkʰɨ̋ɜ溪qʰêj
並běŋ定de᷅ŋ澄dɹȁ͇ŋ群ɡʷʉ̏n
精tsîæŋ庄tʂâɴ章tɕɨ̂ɐɴ
清tsʰîæŋ初tʂʰɨ̂ɜ昌tɕʰɨ̂ɐɴ
从dzʷʉ̏ɜɴ崇dʐȕɴ常dʑɨ̏ɐɴ
心sîm生ʂâ͇ŋ书ɕɨ̂ɜ晓χe̋whɨ̋ɜ
邪zjȁ俟ʐɨ̌船ʑʷȅn匣ʁà͇p
明mɹȁŋ泥nȅj娘nɹȁɴ日ɲít疑ŋɨ̏ɴő
非pβʉ̂i来lə̏j云ɹʷʉ̏n
以jɨ̋kj̈ə᷇n
ɥȉnkʷʰɥ̈ə́tʔêw

单元格为蓝色的是不能作声母的 β、j̈、ɥ̈、w。例字为斜体的是非音韵学术语的例字。

二、元音

二等元音单元音二合元音
不圆
iɨ (ʉ)uiuɨi (ʉi)(ɘu)
œ͇eə (œ)(ʌ) oɨɜ (ʉɜ)
aɨɐ (ʉɐ)

加括号的元音是变体:ʉ〈文韵、微合韵核〉/ɨ/在唇音或唇化声母后的变体(8),œ〈凡韵韵核〉/ə/在唇音介音和唇化韵尾之间的变体(11),ʌ〈豪覃韵韵核〉/ə/在唇音或唇化韵尾前的变体(10),ɘu〈侯韵〉/u/在卷舌、龈腭以外声母后的裂化变体(18)。/a/在绝大多数环境下是非前元音[ɑ]——只有在卷舌、龈腭辅音后,以及带介音的非唇化齿龈声母后〈麻,/a/才是前元音a(7——所以下文不使用ɑ,一律写a(ɑ写成a)。

二等(division-II)元音的具体音质需要进一步的实验语音学研究来回答,本文临时(ad hoc)且即兴(ad lib)地直接在元音下加表示:e͇、a͇、œ͇*1。二等音质可能是 r 化[a˞]、软腭化[aˠ]或咽化[aˤ],甚至可能是更特殊的挤喉声(pressed voice,扩展国际音标写作[a͈])或糙声(harsh voice)。因为二等音质的存在,e͇、a͇、œ͇介于前元音和央元音之间;在今天的北京可能能听到这种音,比如某种口音的元音除去鼻化的发音就分别像是e͇、a͇;不少冀鲁、中原官话的[ɻɛ][ɻə]韵母(的韵母)后半部分也常带一定r色彩,像是e͇。圆唇的œ͇可能比央更后,接近高本汉所认为的北京话[œɽ]的发音*2

i后接软腭音ŋ、k、w〈蒸幽韵〉时偏后,介于前和央之间。ɹi后接ŋ、k、w〈蒸幽韵〉和 m、p〈蒸幽韵〉时整体发成略圆唇、略带舌叶发音的、介于[y][ɹ̩]之间的音,但本文仍然写成ɹi

e、o是中元音。œ是央元音。ʌw〈豪韵〉可以是[ɑw]。a͇w〈肴韵〉可以是[œ͇w]。(肴豪韵韵核归为低元音)反过来,œ͇〈江韵韵核〉可以裂化得接近[a͇w]。

〈支韵〉、ɨɜ〈鱼韵〉、ʉɜ〈虞韵〉是前响二合元音(falling diphthong)[iɛ̯、ɨɜ̯、ʉɜ̯],后滑音ɛ、ɜ只表示运动方向,不一定实际达到。ɘu〈侯韵〉是后响二合元音(rising diphthong)[ɘ̯u]。其他二合元音的响度分布需要进一步的实验语音学研究来回答,但至少它们不是简单的介音 + 单元音或单元音 + 韵尾,宜整体分析为二合元音(19)。本文把iɛ、ɨɜ、ʉɜ分析为渐开二合元音(opening diphthong),但也可以分析为渐央二合元音(centering diphthong)/iə、ɨə、ʉə/(6)。类似地,iæ〈清韵〉、ɨɐ〈阳开〉、ʉɐ〈阳合〉也可以直接分析为/ia、ɨa、ʉa/(6)。此外可能还存在一个二合元音[e̯i],仅出现于di᷅这一个音节,具体语音需要进一步进行实验语音学研究来回答,本文直接视为i。

元音例字

组首的蓝色字是上一章中的元音音位。单元格为蓝色的是上面提到的变体。例字为楷体的是非音韵学术语的例字。省略声调标注。

三、声调

早期中古汉语的声调在时间上可分为相互独立的两个组分,用附加符号描述比用五度标记法(Chao tone letters)更合适:

平 ˋ上 ˊ去 ˉ
阴 ˊ金 kɹîm草 tsʰʌ̋w蔚 ʔʷʉ᷇i雪 sʷɹét
阳 ˋ茶 dɹȁ͇杏 ʁǎ͇ŋ靛 de᷅n褐 ʁàt

第一组分(阴ˊ、阳ˋ)是冗余的,因为它可由声母的清浊响阻决定:清音一定是ˊ〈阴〉,浊阻音〈全浊〉一定是ˋ〈阳〉,响音〈次浊〉可能是ˊ也可能是ˋ。在某些口音里,响音声母音节声调第一组分的高低取决于第二组分的高–非高。ˋ可能伴随弛声(slack voice),需要进一步的实验语音学研究。

第二组分可以是ˋ〈平声〉、ˊ〈上声〉、ˉ〈去声〉,也可以没有〈入声〉。ˊ是高调,并且结尾可能伴随喉部紧张;ˋ、ˉ是非高调但具体音高不明,而且因口音而异,需要进一步的实验语音学研究。当韵尾是塞音,声调的第二组分为零,可能是因为清音无法承载音高。

此外因为第一组分是冗余的,所以也可以只标第二组分(声调分阴阳):

例字天 tʰèn子 tsɨ́圣 ɕīæŋ哲 tɹet

连读变调可能不存在,具体情况需要进一步的实验语音学研究来回答。

unt的发音

unt所读的各声调音高曲线如下:(录音于 2020.8.31

基于 unt 的发音,可将附加符号翻译成五度标记法描述(声调写成五度标记)如下:

金 kɹim˦˨草 tsʰʌw˦˥蔚 ʔʷʉi˦˧˦雪 sʷɹet˥
茶 dɹa͇˨˩杏 ʁa͇ŋ˨˧靛 den˧˨˧褐 ʁat˨˩

四、音节配列

音节首(声母 + 介音)和韵基的搭配见下表,详细规则见下文:

知乎专栏·凭风苑中的本章:切韵拟音J:语音描写 – 知乎

拟音说明

一、从三C₁⁺韵到松元音

本章一律以平声赅入声。

1. 三等韵的分类

《切韵》音系音节分类的首要特征就是三等–非三等,今天我们知道了它们的差别在音节结构上——是否有滑音作介音。那么三等韵接下来要怎样划分呢?很多人只关心音值上的差异:三A、B韵的韵核是前元音,三C韵的韵核是非前元音。这种观察是肤浅的。一个更底层、更音系学的观察是,一部分三C韵具有特殊性:它们不和锐音声母相拼。这部分三C韵称作三C₁韵,另一部分能拼锐音声母的称作三C₂韵。A、B、C₁、C₂周法高的分类法*3。基于此,我们把三等韵的分类及原则列成下表:

三等韵的5条原则是:

  1. C₁ 不能拼锐音声母*4
  2. A类或B类 ⇔ 有重纽
  3. A类 ⇔ 和钝音声母相拼的音节在韵图中列在四等
  4. A类 ⇔ 和唇音声母〈帮组〉相拼的音节在汉越音(越南语汉字音)中龈化(alveolarize,越南语的明母重纽A类为什么会变成d?
  5. C₁类或C₂类 ⇔ 所拼的帮组爆发音在后世擦化(spirantize)〈轻唇化〉

重纽的定义是:同一个三等韵下存在声母、开合、声调相同的两个音节的现象。现在我们知道这种对立是发生在介音上,并且将两类音节按照第3、4条规则分为A、B类。重纽现象只发生在钝音声母后,锐音声母后没有这种对立,不过上表中A、B类拼锐音都写成+

特别地,侵韵和盐韵只在ʔ〈影母〉有A类(且和影母B类对立),其余钝音声母后只有B类(《广韵》侵韵溪母上声和盐韵群母平声、溪母上声有重出小韵,不可靠)。这个状况就像清末民国北京话ai韵只在零声母有齐齿呼(崖yái为什么周杰伦与费玉清的《千里之外》中的「崖」同时出现了yái和yá两种读音?),其余声母后只有开口呼、合口呼。很好理解,这是因为没有声母时音节首对介音的承载能力更强。祭韵则事实上在所有声母后都没有重纽对立(《广韵》疑母去声有对立,不可靠)。表格中我们径直把侵、盐、祭韵放在A、B韵里。

根据第1、2条规则可列出如下拼合关系:

锐音钝音
A类±+
B类+
C₁+
C₂++

不仅A、B在锐音后是互补的,AB和C₁在锐音后也是互补的。实际上高本汉《中国音韵学研究》(Études sur la phonologie chinoise)第三卷早就注意到三C₁韵的特殊了,并且提出三AB韵和三C₁韵在钝音后的区别由于腭介音的强度不(was a question of a varying degree of strength of the medial palatal element),只不过高本汉后来马上就修改了这一观点。中译本采用了他修改后的观点:三AB韵和三C₁韵的区别是韵核;于是国内也没有再重视AB和C₁的互补关系了。

在继续讨论三等韵的分类之前,我们需要先解决那些不合原则的韵

清韵和庚尽管韵目不同,但从互补关系上看是一对重纽,所以在表格中加括号;清韵是A类,庚是B类。庚虽然有锐音,但仅限卷舌咝音〈庄组〉后,而且是和庚互补的,所以在表格中加括号(同时,和清韵也是互补的,所以不违反锐音重纽)。臻韵和真韵、欣韵互补,是卷舌咝音〈庄组〉后韵核r化的变体,它可以是AB类也可以是C₂类,但因为欣韵已经是C₁类,所以我们认为它是AB类,是真韵的条件变体;因为整个韵核都r化了,所以表中加上成音节附加符号给它算B̩类。

之、鱼、欣、严不拼唇音声母,从互补关系上看分别是尤、虞、文、凡对应的韵,而且之、鱼的韵核是非前元音,指向C₂类韵,欣、严也不拼锐音声母,指向C₁类韵;我们确定它们不是A、B类,而是C类,因为是开口所以表中加上扩展国际音标的展唇(labial spreading)附加符号给它们算C͍类。

2. 不合原则的三等韵:蒸韵和幽韵

蒸韵在《切韵》的常见传世增订本《广韵》中没有重纽对立,但在宋濂跋唐写本王仁昫《刊谬补缺切韵》(通称《王三》,故宫博物院藏)中是有的,影母入声有(扵力反)、扵棘反*5)两小韵对立。小韵在《广韵》中被并入小韵,于是没有重纽对立了。敦煌《毛诗音》残卷中的反切高度区分ABC类,也显示不同类,说明《王三》的该重纽对立是可靠的。《王三》蒸韵只在影母有重纽,这和侵韵、盐韵的情形一样。

对于其他声母后蒸韵的归类,我们需要参考《毛诗音》。《毛诗音》蒸韵的分布情况如下:(《切韵》蒸职韵「忆抑」的重纽对立是否可靠?

BC
帮组+
锐音(除庄组外)+
锐音(庄组)+
见影组开口++
见影组合口+

《毛诗音》见影组开口的对立除了影母入声(B)和亿(C)外,还有见母入声(B)和(C)。帮组后的蒸韵是B类,确实符合它后世不轻唇化、在汉越音中也不龈化的现象。但是,《毛诗音》的B–C重纽违反了第2条原则,本文不能接受。不过考虑到现代标准汉语ing的实际音值也变化多端,就好理解了:就算蒸韵见组开口真的是A类 /iŋ/,它的实际音值也很难是 [iŋ],i拼ŋ通常会后移,成为介于A、C类之间的状态。《毛诗音》的注音者们可能因此把它归入更无标记的C类,就像现代标准汉语ing在有声母时也可以记作 [ɪŋ](但在零声母时显然要是 [jɪŋ]!这就是为什么影母后能保持重纽)。既然unt已经决定将现代标准汉语ing处理为 /iŋ/ 而非 /ɪŋ/(新老派普通话的宽严式记音),那我们就大大方方地把小韵以外的见影组开口处理为A类而非C类,表中加上偏后附加符号(A̠)。平行地,小韵和帮组、见影组合口表中算B̠类。

从音系学的角度,我们可以认为小韵以外的所有蒸韵在底层都是A类,随即被ŋ后拉变成A̠类。在唇音和唇化声母后,A̠类的介音 [j̠] 被同化为圆唇版本 [ɥ̠],[ɥ̠] [ɹʷ] 要比 [j̠] [ɹ] 距离更近(在现代方言中也有不少体现),于是 [ɥ̠] 自带B类性质;本文处理为ɹiŋ,解释为这里的ɹi在唇音(和圆唇声母)后整体实现为 [y] [ɹ̩] 之间的。这同样可以帮助理解侵韵ɹim在梵汉对音中对umuṃ的情况:ɹi在唇音韵尾前也一样。

幽韵同样在《广韵》中没有重纽对立,但在敦煌唐写本《切韵》残卷(Or.8210/S.2071,通称《切三》,巴黎国家图书馆藏)中有晓母平声香幽反*6)、*7(许彪反)两小韵对立:

《王三》也一样有对立。小韵在《广韵》中被并入小韵,于是没有重纽对立了。根据《王三》可系联出帮组和小韵是B类,其他见影组A类。《毛诗音》反切尽管只有5字,但显示出相同情形(其中的出自棄爾勞,以為王,美也,俗写作):

AB
帮组
见母樛赳纠
晓母

帮组后是B类、见影组后一般是A类,这个情形和蒸韵是一样的。或者说,幽韵本来就和蒸韵一样:韵核是i,韵尾是软腭音。帮组后幽韵是B类不仅使不轻唇化,r介音还很可能加速了的裂化,今韵核是低元音,就像ʂʷi᷇〈生母脂韵合口去声〉的裂化一样。韵图把幽韵统一列在四等,和尤韵合并,可能是后人失去重纽对立后的一种重分析。我们干脆和蒸韵一样算A̠、B̠类。

3. 不合原则的三等韵:麻和戈,幽韵和尤韵

和戈的状况和其他三等韵都不一样:

锐音钝音
+
+

而且它们都不拼唇音声母,无法用后两条原则判断是AB还是C。不过我们知道戈韵韵核的实际音值是非前元音,所以它不是A、B类,仅此来看戈像C₁类(戈有锐音合口小韵,不可靠。它们在《切韵》中很可能是一等韵,而被《广韵》改成三等)。麻更是无法归类,因为无论哪类都应该优先能拼钝音声母。于是我们注意到麻和戈的互补关系,不妨认为就是同一个 /a/ 音位,根据锐钝分化了。

和戈在A、B、C的分类面前呈现一种无性别(agender)状态,在哪一类上都不显,所以本文专门新增一类:麻和戈是C₀类。我们把C类及其对应的A、B类合称作三C韵(指同韵尾同韵核高度的韵目的互补关系),于是对于三C韵,其AB类和C类有无对立的情况可列表如下:

锐音钝音
三C₀⁺无对立无对立
三C₁⁺无对立有对立
三C₂⁺有对立有对立

0、1、2恰好有了新的含义:对立的级别(class)。于是三C韵的C就可以重新诠释为class的缩写了(百越闲人,私人通信)。

到了中古晚期,三C介音前移,C₀韵的韵核也随之前移,戈就进入麻韵了。

幽韵虽然是AB类,但锐音却只有一个来母的小韵(另有子幽切山幽切两小韵是切语讹误,本为子絲切、山函切,见《新撰字镜》),并且字又收在尤韵。于是,幽韵和尤韵在锐音后实际上没有对立:

锐音钝音
幽韵+
尤韵++

根据最开始的标准,以及从尤之合相的角度看,尤韵是C₂类;但是从上面的角度看,幽尤韵实际上是三C₁⁺韵。为什么锐音不拼幽韵而拼尤韵呢?我们不太能说出确切缘由,但总之声韵搭配状况如此。

4. 三等韵的分类da Capo*8

现在可以重画三等韵的分类表了。由于三C韵内部有互补关系,我们可以直接将C和对应的A、B合到一起。对于A̠、B̠、B̩、C͍,我们也直接并入对应的A、B、C,因为我们要做的是音位分析。于是可以画出压缩后的表:

这时,C₁⁺和C₂⁺的分界线一目了然:无韵尾和 -ŋ韵尾的是三C₂⁺韵(但麻退化成三C₀⁺韵),-w、-m、-j、-n韵尾的是三C₁⁺韵(尤韵作为单元音是C₂类,作为 -w尾韵是C₁类)。三C₂⁺韵韵核有高/中/低元音三组,三C₁⁺韵韵核只有高/中元音两组。

这一格局和现代汉语太像了:

-∅-ng-n-w-j
i ü ï u
ie üe e uoing iong eng ongin ün en uniu ouei uei
ia a uaiang ang uangian üan an uaniao aoai uai

现代汉语的是开音节韵核有三组韵核,闭音节韵核只有两组,开、闭音节韵核占据的元音空间不同(梦YM1-J7.1,见本文附录)。从韵辙(十三辙)看,开音节的前后元音不能通押(i不能押uie不能押e),但闭音节能(in能押uning能押ong)。正因如此,我们在分析现代汉语时会把inünenun分析为同一韵核、不同介音的四呼。三C₂⁺韵在锐音后有对立但三C₁⁺韵没有,就像现代汉语开音节的前后元音不能通押但闭音节能。受此启发,本文将三C₁⁺韵像inünenun一样分析为同一韵核、不同介音,正如高本汉最开始所说的由于腭介音的强度不

5. 三等韵的介音

由上述讨论,本文指定钝音后的A、B、C三类都是不同的介音。以往有人根据如下互补关系而把A和C合并(因为都不是r音),或是把B和C合并(因为都是非前元音音色):

r
A+
B+++
C+

是没有必然道理的,正如我们不把现代汉语j组辅音并入g组、zh组、z组中的任何一者(尽管它们都和j组互补):

r
jqx+
zhchsh+++
gkh+

我们完全可以把特征的方向翻转以使3种介音没有交集:

r
A+
B+
C+

不承认第三种介音和不承认第三种性别一样是刻板、倒退的。

B类介音是r音,可能的选择有ɹ、ɻ、ɹj、j˞,本文直接写ɹ。不用ɻ的原因是它要更像 [j] 的色彩,和庄组不同。以往很多人把三B介音写成ɹj以便和二等的r介音相区别也是多此一举了,因为本文的音节结构里二等没有介音。[j˞] 本来和 [ɹ] 就没什么区别,不如直接写ɹ。[ɹ] 式的介音在现代方言中不难听到,它通常是齐齿呼的介音(的变体),只不过一般都一律被记作 /j/ /i/ 了。

C类介音的痕迹最弱,本文拟作是和声母同部位的近音。对唇音来说,就是双唇近音 [β̞],简写作β。对软腭音〈见组〉来说,直接用软腭近音ɰ显得太靠后,而且不利于区别东(考虑kûŋ和kwûŋ的写法),它的实际发音应该介于标准的硬腭和标准的软腭之间,所以本文使用软腭前近音j̈——也是ɨ对应的半元音。

A类介音是j,无需讨论。它和以母是同一个音素。这3类介音的对立对母语者而言并不困难,例如黄雀飞(私人通信)指出 [ji] [j̈i]全不一,而我们需要听辨很久才能确定其音质。

以上说的是钝音后的情况。卷舌和龈腭锐音后的三等介音理论上也是同部位的近音ɹ或j,但那些咝音〈庄组和章组〉已经是塞擦音了,它们不再多余带一个介音。日本汉字音也显示着这一点。这在汉语中也丝毫不奇怪,上海话的研究已经表明上海话的龈–腭音后没有介音,黄雀飞作为母语者也早就指出邵阳话龈–腭音后没有介音。认为 [ɕ] 后一定要带介音的人,语音学水平竟不如黄雀飞!非咝音〈知组〉本文直接把ɹ算入声母(如彻母构成的音节首写作tɹʰ- 而非tʰɹ-),也无需介音。从来源看,知母tɹ从上古的三等 *tr演变而来,这中间不需要增生任何j介音。

齿龈音〈精组〉后的介音不能省略,因为要和非三等字区分(如súq和sɹúq)。尽管精组三等在韵图都列在四等,但根据日本汉字音和梦(YM1-J8.10-1,见本文附录)来看,精组三C₂介音是同部位的ɹ而非j。注意这个ɹ不是卷舌的。精组三AB合口的介音本文也定为ɹ,一方面是因为看到唇化蒸韵归B̠类而非A̠类,另一方面是分尖团的现代方言里尖音(齿–龈音)后的撮口呼不少也倾向 [ɹʷ](最著名的是马保国),以及像现代读sǔn(而非xǔn < sǚn)。也就是:

(精组后)三AB三C₂
开口jɹ
合口ɹʷɹʷ

的特殊倾向我们再熟悉不过了,看现代标准汉语老派口音 /an/ 四呼的音值分布(北京官话中的 /yan/ 的实际音值到底是怎样的,有哪些变体?):

jɛnan
ɥanwan

一些不分的冀鲁、中原官话 /ə/ 四呼的音值分布:

(ɯ)ɤ
yɤ~youɤ~uo

(简言之,其 /iə/ 听起来像ie /yə/ 听起来像üo

都呈现出这种齐齿呼独立,而撮口呼同开口呼、合口呼的状况——只不过这一语音事实经常被不负责任地无视

6. 松紧元音

回到韵核。三C₁⁺韵韵核所具有的这种特殊性,本文将其定为 [−tense],即松元音,因为通常来说松元音不能作开音节的韵核(中古 -ŋ尾音节的性质是开音节)。音位上,高松元音本文写作 /ɪ/,中松元音写作 /ɜ/。本文这两个松元音是一种概念性的音位,不具有舌位前后的性质,它会根据前接音段的锐钝实现为前元音(AB类)或非前元音(C₁类)。具体来说,如果声母是钝音,那么取决于介音的锐钝,如:

  • 谴 /kʰjɜ̄n/ → [kʰje᷇n]
  • 骞 /kʰɹɜ̀n/ → [kʰɹên]
  • 建 /kj̈ɜ̄n/ → [kj̈ə᷇n]

如果声母是锐音,那么直接实现为前元音(这就是锐音不拼三C₁韵的原因),如:

  • 箭 /tsjɜ̄n/ → [tsje᷇n]
  • 战 /tɕɜ̄n/ → [tɕe᷇n]
  • 展 /tɹɜ́n/ → [tɹe̋n]

三C₂⁺韵韵核则必须是紧元音,而且靠韵核的 [±front](前–非前)来区分AB类和C类。三C₀⁺韵韵核没有指定 [±tense] 的性质——/a/ 没有松紧对立。非三等韵的韵核也是紧元音。

脂、蒸、幽的韵核是i,尤、东的韵核是u,无需讨论。之韵是和三C介音同部位的ɨ。

7. 二合元音:支、鱼、虞、钟

支、鱼、虞、钟的韵核在早期中古汉语里是前响二合元音 [iɛ̯、ɨɜ̯、ʉɜ̯] [iə̯、ɨə̯、ʉə̯](遇摄是零韵尾还是u韵尾?),因为他们距离高元音更近,而且日本汉字音里支、虞韵就是高元音i(y)u,钟韵的日语吴音也是高元音 (y)u(u)。日本汉字音里鱼韵是 (y)o,但鱼虞应是同高度的,所以这个o应该是o₂,也可以对应中古汉语的高元音ɨ。这种前响二合元音并不陌生,现代标准汉语的e就是 [ɤʌ̯],北京官话新派口音的ieüeuo以及ian的元音也都前响化了。前响性质正是高化的结果和继续高化的动力。

正因为是二合元音,所以它们在锐音后不需要介音就能对立了。

至于这组元音是 [iɛ̯、ɨɜ̯、ʉɜ̯] 还是 [iə̯、ɨə̯、ʉə̯],我们难以确定。本文根据支韵和鱼虞不押韵的关系,优先选择不同的后滑音,即 [iɛ̯、ɨɜ̯、ʉɜ̯]。现代方言中的 [iɛ̯] ~ [iə̯] 本来就是一个连续统。

8. 二合元音:清韵、阳韵

上面说到清韵和庚是互补的,但清韵、阳韵在卷舌塞音〈知组〉后有对立,如(清韵)、(阳韵)的对立。因为锐音后不分辨三等的几类介音,所以这个对立不能靠介音,只能靠韵核或韵尾。那么,的音位有几种可能的方案:

  1. /tɹɜŋ、tɹaŋ/
  2. /tɹiɛŋ、tɹaŋ/
  3. /tɹiæŋ、tɹaŋ/
  4. /tɹaŋ、tɹɑŋ/
  5. /tɹajŋ、tɹawŋ/
  6. /tɹaŋ、tɹaɴ/

首先观察到《切韵》清韵和庚韵是分开的,暗示着清韵更高,于是可以有方案1,/tɹɜŋ/(音节首是锐音,实现为 [tɹeŋ])——但这个韵核是松元音 /ɜ/,违反了 -ŋ韵尾的都是三C₂⁺韵的性质。那么方案2,给清韵用支韵的韵核 /iɛ/——也不合适,因为 /iɛ/ 更偏向高元音(钟韵ʉɜŋ的韵核也和虞韵一样偏向高元音),但清韵是偏向低元音的。不过现代标准汉语有类似的现象:[jɛ]、[jɛn] 两个韵母在最新派口音里变成了 [iɪ] [iɐn],正像支、清的方向不同。那么方案3,给清韵新安排一个二合元音——显然,引入新音位是不经济的。方案4,干脆直接用前后元音对立——但我们发现其他环境下(二等韵除外)从来没有 /a/、/ɑ/ 的对立,所以这也是要怀疑的。方案56是以往一些人的思路,为了解决江韵和庚耕对立的问题,引入两种舌面鼻音韵尾——本文不采用,一方面是其他韵母不需要两种舌面鼻音韵尾的对立。对方案5来说,另一方面是《切三》字注文反语,噱之平是戈是阳韵入声,说明阳韵的音节尾不能在音位上有圆唇性。对方案6来说,另一方面是在声母上也没有两种舌面鼻音的对立。

不妨先跳过清韵,看看阳韵和庚要怎样处理。如果把庄组庚移至庚(因为互补,见上文),那么阳韵和庚就互补了。假如把它们都处理成 /aŋ/,那么三等 /aŋ/ 分布情况如下:(3行分别是阳韵、庚、阳韵)

[ɑŋ] / 锐音声母后
[aŋ] / 钝音声母 + 锐音介音后
[ɑŋ] / 钝音声母 + 钝音介音后

在锐音介音后实现为前元音,在锐音声母后却实现为后元音,这大有问题,说明阳韵和庚不能处理成相同的韵核。阳韵的非前元音性必须是韵核自带的(或者按照上面方案5、6,是韵尾自带的),而不能靠介音;但同时,它的韵核又不能是独立的 /ɑ/(即方案4,已经在上面被否定)。结论是,安排一个二合元音 /ɨa/ 作韵核——

清韵的方案3获胜。清韵和阳韵的韵核分别是 /ia/ /ɨa/,它们实现为iæ和ɨɐ;这里的 /a/ 又显出 [−tense] 性了。有没有必要把麻和戈也改成ia和ɨa呢?本文选择不改。

9. 轻唇化和知组塞擦化

(未完待续)

附录

梦(YM1-J7.1)

(7:40)想怎样用分子轨道图来画现代汉语元音:

梦(YM1-J8.10-1)

(6:18)在一个废墟般的园林中,我遇到一位friends(兽娘)*A。我把她带到屋子里,然后她念,(松树;三等)是 [s̻u̟ŋ],(一等)是 [s̺u̞ŋ]。我想,这个通摄三等听起来是介于ün和ong之间的音,而且意识到那像一个s([s̻u̟ŋ] 是梦里想到的标音法,实际发音更像 [s̻ɹʷŋ] 或者 [s̻ŋ̍ʷ])。


*1用附加符号下等号(U+0347)代替。但注意一些字体(包括Times New Roman、Arial)把它和附加符号双下横线(U+0333)弄反了。

*2见高本汉《北京话语音读本》(A Mandarin Phonetic Reader in the Pekinese Dialect),原文为瑞典方言字母(形近ᴓч̵)。显然,北京话不可能是这个发音。

*3A、B的命名提出于周法高《广韵重纽的研究》(《中央研究院历史语言研究所集刊》第十三本,1945),C的命名提出于周法高《古音中的三等韵兼论古音的写法》(《中央研究院历史语言研究所集刊》第十九本,1948),C₁、C₂的命名提出于周法高《论上古音和切韵音》(香港中文大学《中国文化研究所学报》第3卷第2期,1970)。

*4的意思是等价。

*5《王三》小韵切语漫漶不清,这里使用《切韵》增字本残页(Or.8210/S.6013,大英图书馆藏)、项元汴跋唐写本《刊谬补缺切韵》(通称《王二》,故宫博物院藏)和五代本《切韵》(P.2014,法国国家图书馆藏)的切语,它们的小韵都是独立的。孙愐《唐韵》残卷也分,但小韵缺损。

*6《广韵》原文为,驚風。香幽切,又風幽。这个实际上是误搬了的音。《文选》左思《吴都赋》駥飍,六臣注音,必由(反);飍,香幽(反

*7《切三》作𠇾,《王三》《王二》作。《王三》注,可能是王仁昫认为《切韵》作是错的,去掉了

*8da capo是音乐术语,意思是从头再次演奏。

*A动画《兽娘动物园》中的拟人化野生动物。

One thought on “AWs-309 切韵拟音J”

Leave a Reply

Your email address will not be published.