feat: 增加中译西辅助、在线翻译、B1词库与三语语音对照
This commit is contained in:
@@ -0,0 +1,358 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>语音对照:汉语拼音 / 英语 / 西班牙语 — 西班牙语知识库</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<nav class="top-nav">
|
||||
<a class="back" href="../knowledge.html">← 知识库</a>
|
||||
<span class="home">🔤 三语语音对照</span>
|
||||
</nav>
|
||||
|
||||
<h1>汉语拼音 · 英语字母 · 西班牙语发音对照</h1>
|
||||
<p class="page-subtitle">比较三套语音系统的异同,点击 🔊 听发音,重点区分最容易混淆的音。</p>
|
||||
|
||||
<div class="article" id="resumen">
|
||||
<h2>0. 三套语音系统概览</h2>
|
||||
<div class="article-title-en">Sistemas de pronunciación</div>
|
||||
<table>
|
||||
<tr><th>项目</th><th>汉语拼音</th><th>英语</th><th>西班牙语</th></tr>
|
||||
<tr><td>文字系统</td><td>汉字 + 拼音字母</td><td>26 个拉丁字母</td><td>27 个拉丁字母</td></tr>
|
||||
<tr><td>发音单位</td><td>声母 + 韵母 + 声调</td><td>字母名 + 音素(元音/辅音)</td><td>字母名 + 固定拼读规则</td></tr>
|
||||
<tr><td>元音数量</td><td>6 个单韵母(含 ü)</td><td>约 20 个元音音素</td><td>5 个固定元音</td></tr>
|
||||
<tr><td>声调/重音</td><td>4 个声调,决定词义</td><td>重音影响词义,拼写不标记</td><td>重音规则固定,可写重音符号</td></tr>
|
||||
<tr><td>字母音对应</td><td>拼读较规则</td><td>拼写与读音不一致多</td><td>拼读非常规则</td></tr>
|
||||
<tr><td>最易混淆</td><td>zh/ch/sh/j/q/x/c</td><td>th / v / r / 长短元音</td><td>b/v、r/rr、ll、ñ、j</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="article" id="pinyin">
|
||||
<h2>1. 汉语拼音</h2>
|
||||
<div class="article-title-en">Pinyin chino</div>
|
||||
|
||||
<h3>声母</h3>
|
||||
<div id="pinyin-initials"></div>
|
||||
|
||||
<h3>韵母</h3>
|
||||
<div id="pinyin-finals"></div>
|
||||
|
||||
<h3>四个声调</h3>
|
||||
<div id="pinyin-tones"></div>
|
||||
<div class="tip"><strong>易错提醒:</strong>汉语声调决定词义,如 mā(妈)、má(麻)、mǎ(马)、mà(骂);西班牙语没有声调,只有固定重音。</div>
|
||||
</div>
|
||||
|
||||
<div class="article" id="english">
|
||||
<h2>2. 英语字母与常见音素</h2>
|
||||
<div class="article-title-en">English letters and sounds</div>
|
||||
|
||||
<h3>26 个字母名称</h3>
|
||||
<div id="english-alphabet"></div>
|
||||
|
||||
<h3>常见元音音素</h3>
|
||||
<div id="english-vowels"></div>
|
||||
|
||||
<h3>常见辅音音素</h3>
|
||||
<div id="english-consonants"></div>
|
||||
<div class="tip"><strong>易错提醒:</strong>英语同一个字母有多种读音,如 a 在 apple /æ/、cake /eɪ/、about /ə/ 中不同;字母名与单词中的实际发音也不同。</div>
|
||||
</div>
|
||||
|
||||
<div class="article" id="spanish">
|
||||
<h2>3. 西班牙语字母与拼读</h2>
|
||||
<div class="article-title-en">Alfabeto y sonidos españoles</div>
|
||||
|
||||
<h3>元音</h3>
|
||||
<div id="spanish-vowels"></div>
|
||||
|
||||
<h3>易混辅音</h3>
|
||||
<div id="spanish-consonants"></div>
|
||||
<div class="tip"><strong>易错提醒:</strong>西班牙语拼读基本固定:h 不发音,ll 常发“衣”或“日”,ñ 是 ni 的鼻音,r 和 rr 会区分词义(pero 但是 / perro 狗)。</div>
|
||||
</div>
|
||||
|
||||
<div class="article" id="comparacion">
|
||||
<h2>4. 三语易混淆音对照</h2>
|
||||
<div class="article-title-en">Puntos de confusión</div>
|
||||
<div id="confusion-table"></div>
|
||||
</div>
|
||||
|
||||
<script src="../speech.js"></script>
|
||||
<script>
|
||||
function escHtml(s) {
|
||||
var div = document.createElement('div');
|
||||
div.textContent = s;
|
||||
return div.innerHTML;
|
||||
}
|
||||
|
||||
function speakExample(text, lang) {
|
||||
speakText(text, lang);
|
||||
}
|
||||
|
||||
function renderRows(rows, columns) {
|
||||
return rows.map(function(row) {
|
||||
return '<tr>' + columns.map(function(col, i) {
|
||||
var val = row[i];
|
||||
if (col.sound) {
|
||||
return '<td><button class="speak-btn" data-text="' + escHtml(row[col.textIndex]) + '" data-lang="' + col.lang + '">🔊</button> ' + escHtml(val) + '</td>';
|
||||
}
|
||||
return '<td>' + escHtml(val) + '</td>';
|
||||
}).join('') + '</tr>';
|
||||
}).join('');
|
||||
}
|
||||
|
||||
function buildTable(containerId, head, rows, columns) {
|
||||
document.getElementById(containerId).innerHTML =
|
||||
'<table><thead><tr>' + head.map(function(h) { return '<th>' + escHtml(h) + '</th>'; }).join('') + '</tr></thead><tbody>' +
|
||||
renderRows(rows, columns) + '</tbody></table>';
|
||||
}
|
||||
|
||||
// 声母
|
||||
buildTable('pinyin-initials',
|
||||
['声母', '拼音', '近似说明', '发音'],
|
||||
[
|
||||
['b', 'ba', '不送气“玻”', '爸'],
|
||||
['p', 'pa', '送气“坡”', '怕'],
|
||||
['m', 'ma', '双唇鼻音“妈”', '妈'],
|
||||
['f', 'fa', '唇齿摩擦“发”', '发'],
|
||||
['d', 'da', '不送气“得”', '大'],
|
||||
['t', 'ta', '送气“特”', '他'],
|
||||
['n', 'na', '舌尖鼻音“那”', '那'],
|
||||
['l', 'la', '舌尖边音“拉”', '拉'],
|
||||
['g', 'ga', '不送气“哥”', '哥'],
|
||||
['k', 'ka', '送气“科”', '卡'],
|
||||
['h', 'ha', '喉部摩擦“哈”', '哈'],
|
||||
['j', 'ji', '舌面不送气“基”', '鸡'],
|
||||
['q', 'qi', '舌面送气“七”', '七'],
|
||||
['x', 'xi', '舌面摩擦“西”', '西'],
|
||||
['zh', 'zha', '翘舌不送气“知”', '知'],
|
||||
['ch', 'cha', '翘舌送气“吃”', '吃'],
|
||||
['sh', 'sha', '翘舌摩擦“诗”', '诗'],
|
||||
['r', 'ri', '翘舌浊音“日”', '日'],
|
||||
['z', 'za', '平舌不送气“资”', '资'],
|
||||
['c', 'ca', '平舌送气“疵”', '词'],
|
||||
['s', 'sa', '平舌摩擦“思”', '思'],
|
||||
['y', 'ya', '半元音“呀”', '呀'],
|
||||
['w', 'wa', '半元音“哇”', '哇']
|
||||
],
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 },
|
||||
{ sound: true, textIndex: 3, lang: 'zh' }
|
||||
]
|
||||
);
|
||||
|
||||
// 韵母
|
||||
buildTable('pinyin-finals',
|
||||
['韵母', '例字', '说明', '发音'],
|
||||
[
|
||||
['a', 'ā', '开口音“啊”', '啊'],
|
||||
['o', 'ō', '圆唇“喔”', '喔'],
|
||||
['e', 'ē', '舌面后“鹅”', '鹅'],
|
||||
['i', 'ī', '前高“衣”', '衣'],
|
||||
['u', 'ū', '后高“乌”', '乌'],
|
||||
['ü', 'ǖ', '圆唇前高“迂”', '迂'],
|
||||
['ai', 'āi', '“哀”', '爱'],
|
||||
['ei', 'ēi', '“诶”', '诶'],
|
||||
['ao', 'āo', '“熬”', '熬'],
|
||||
['ou', 'ōu', '“欧”', '欧'],
|
||||
['an', 'ān', '“安”', '安'],
|
||||
['en', 'ēn', '“恩”', '恩'],
|
||||
['ang', 'āng', '“昂”', '昂'],
|
||||
['eng', 'ēng', '后鼻音“亨”', '鞥'],
|
||||
['ong', 'ōng', '“轰”', '轰'],
|
||||
['ie', 'iē', '“耶”', '耶'],
|
||||
['üe', 'üē', '“约”', '约'],
|
||||
['ian', 'iān', '“烟”', '烟'],
|
||||
['in', 'īn', '“因”', '因'],
|
||||
['iang', 'iāng', '“央”', '央'],
|
||||
['ing', 'īng', '“英”', '英'],
|
||||
['ua', 'uā', '“蛙”', '蛙'],
|
||||
['uo', 'uō', '“窝”', '窝'],
|
||||
['uai', 'uāi', '“歪”', '歪'],
|
||||
['ui', 'uī', '“威”', '威'],
|
||||
['uan', 'uān', '“弯”', '弯'],
|
||||
['un', 'ūn', '“温”', '温'],
|
||||
['uang', 'uāng', '“汪”', '汪'],
|
||||
['üan', 'üān', '“冤”', '冤'],
|
||||
['ün', 'ǖn', '“晕”', '晕']
|
||||
],
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 },
|
||||
{ sound: true, textIndex: 3, lang: 'zh' }
|
||||
]
|
||||
);
|
||||
|
||||
// 声调
|
||||
buildTable('pinyin-tones',
|
||||
['声调', '示例', '含义', '发音'],
|
||||
[
|
||||
['第一声 ā', 'mā', '妈', 'mā'],
|
||||
['第二声 á', 'má', '麻', 'má'],
|
||||
['第三声 ǎ', 'mǎ', '马', 'mǎ'],
|
||||
['第四声 à', 'mà', '骂', 'mà'],
|
||||
['轻声', 'ma', '吗(语气词)', 'ma']
|
||||
],
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 },
|
||||
{ sound: true, textIndex: 3, lang: 'zh' }
|
||||
]
|
||||
);
|
||||
|
||||
// 英语字母
|
||||
var alphabet = [];
|
||||
var letterNames = {
|
||||
A:'eɪ', B:'biː', C:'siː', D:'diː', E:'iː', F:'ef', G:'dʒiː',
|
||||
H:'eɪtʃ', I:'aɪ', J:'dʒeɪ', K:'keɪ', L:'el', M:'em', N:'en',
|
||||
O:'oʊ', P:'piː', Q:'kjuː', R:'ɑːr', S:'es', T:'tiː', U:'juː',
|
||||
V:'viː', W:'ˈdʌbəljuː', X:'eks', Y:'waɪ', Z:'ziː'
|
||||
};
|
||||
var letterExamples = {
|
||||
A:'apple', B:'book', C:'cat', D:'dog', E:'egg', F:'fish', G:'go',
|
||||
H:'hat', I:'ice', J:'jump', K:'kite', L:'lion', M:'moon', N:'night',
|
||||
O:'orange', P:'pen', Q:'queen', R:'run', S:'sun', T:'time', U:'umbrella',
|
||||
V:'very', W:'water', X:'box', Y:'yes', Z:'zoo'
|
||||
};
|
||||
Object.keys(letterNames).forEach(function(letter) {
|
||||
alphabet.push([letter, letterNames[letter], letterExamples[letter], letter + ', ' + letterExamples[letter]]);
|
||||
});
|
||||
buildTable('english-alphabet',
|
||||
['字母', '字母音标', '例词', '发音'],
|
||||
alphabet,
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 },
|
||||
{ sound: true, textIndex: 3, lang: 'en' }
|
||||
]
|
||||
);
|
||||
|
||||
// 英语元音
|
||||
buildTable('english-vowels',
|
||||
['音标', '例词', '说明', '发音'],
|
||||
[
|
||||
['/æ/', 'cat', '短音“哎”', 'cat'],
|
||||
['/e/', 'bed', '短音“诶”', 'bed'],
|
||||
['/ɪ/', 'sit', '短音“衣”更短', 'sit'],
|
||||
['/iː/', 'see', '长音“衣”', 'see'],
|
||||
['/ɒ/', 'hot', '短音“奥”', 'hot'],
|
||||
['/ɔː/', 'law', '长音“奥”', 'law'],
|
||||
['/ʌ/', 'cup', '短音“阿”', 'cup'],
|
||||
['/ɑː/', 'car', '长音“啊”', 'car'],
|
||||
['/ʊ/', 'book', '短音“乌”', 'book'],
|
||||
['/uː/', 'food', '长音“乌”', 'food'],
|
||||
['/ə/', 'about', '弱音“额”', 'about'],
|
||||
['/eɪ/', 'cake', '双元音“诶衣”', 'cake'],
|
||||
['/aɪ/', 'time', '双元音“啊衣”', 'time'],
|
||||
['/oʊ/', 'go', '双元音“欧”', 'go'],
|
||||
['/aʊ/', 'house', '双元音“啊乌”', 'house']
|
||||
],
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 },
|
||||
{ sound: true, textIndex: 3, lang: 'en' }
|
||||
]
|
||||
);
|
||||
|
||||
// 英语辅音
|
||||
buildTable('english-consonants',
|
||||
['音标', '例词', '说明', '发音'],
|
||||
[
|
||||
['/p/', 'pen', '送气“泼”', 'pen'],
|
||||
['/b/', 'book', '不送气“玻”', 'book'],
|
||||
['/t/', 'time', '送气“特”', 'time'],
|
||||
['/d/', 'dog', '不送气“得”', 'dog'],
|
||||
['/k/', 'cat', '送气“科”', 'cat'],
|
||||
['/g/', 'go', '不送气“哥”', 'go'],
|
||||
['/f/', 'fish', '“夫”', 'fish'],
|
||||
['/v/', 'very', '上齿咬下唇“夫”浊音', 'very'],
|
||||
['/s/', 'sun', '“思”', 'sun'],
|
||||
['/z/', 'zoo', '“思”浊音', 'zoo'],
|
||||
['/θ/', 'think', '舌尖吐气“丝”', 'think'],
|
||||
['/ð/', 'this', '舌尖吐气浊音', 'this'],
|
||||
['/ʃ/', 'she', '“诗”', 'she'],
|
||||
['/ʒ/', 'pleasure', '“诗”浊音', 'pleasure'],
|
||||
['/tʃ/', 'chair', '“吃”', 'chair'],
|
||||
['/dʒ/', 'jump', '“知”浊音', 'jump'],
|
||||
['/m/', 'moon', '双唇鼻音', 'moon'],
|
||||
['/n/', 'night', '舌尖鼻音', 'night'],
|
||||
['/ŋ/', 'sing', '后鼻音', 'sing'],
|
||||
['/l/', 'lion', '边音“勒”', 'lion'],
|
||||
['/r/', 'run', '卷舌浊音', 'run'],
|
||||
['/h/', 'hat', '喉部“哈”', 'hat'],
|
||||
['/w/', 'water', '半元音“哇”', 'water'],
|
||||
['/j/', 'yes', '半元音“衣”', 'yes']
|
||||
],
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 },
|
||||
{ sound: true, textIndex: 3, lang: 'en' }
|
||||
]
|
||||
);
|
||||
|
||||
// 西班牙语元音
|
||||
buildTable('spanish-vowels',
|
||||
['字母', '近似发音', '例词', '发音'],
|
||||
[
|
||||
['a', '像“啊”', 'casa', 'casa'],
|
||||
['e', '像“诶”', 'mesa', 'mesa'],
|
||||
['i', '像“衣”', 'sí', 'sí'],
|
||||
['o', '像“哦”', 'todo', 'todo'],
|
||||
['u', '像“乌”', 'luna', 'luna']
|
||||
],
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 },
|
||||
{ sound: true, textIndex: 3, lang: 'es' }
|
||||
]
|
||||
);
|
||||
|
||||
// 西班牙语易混辅音
|
||||
buildTable('spanish-consonants',
|
||||
['字母', '例词', '说明', '发音'],
|
||||
[
|
||||
['b / v', 'bien / vivir', '发音相同,双唇音', 'bien vivir'],
|
||||
['c (e/i)', 'cero', '西语“斯/嘶”', 'cero'],
|
||||
['c (a/o/u)', 'casa', '像“嘎”不送气', 'casa'],
|
||||
['ch', 'chico', '像“吃”', 'chico'],
|
||||
['d', 'día / nada', '词首“德”,元音间轻摩擦', 'día nada'],
|
||||
['g (e/i)', 'gente', '像“哈”', 'gente'],
|
||||
['g (a/o/u)', 'gato', '像“嘎”', 'gato'],
|
||||
['h', 'hola', '不发音', 'hola'],
|
||||
['j', 'joven', '喉部“哈”', 'joven'],
|
||||
['ll', 'llamar', '像“衣”或“日”', 'llamar'],
|
||||
['ñ', 'niño', 'ni 的鼻音', 'niño'],
|
||||
['q', 'queso', 'u 不发音,像“克”', 'queso'],
|
||||
['r', 'pero', '单颤音', 'pero'],
|
||||
['rr / r-', 'perro / río', '多颤音', 'perro río'],
|
||||
['z', 'zapato', '西班牙“嘶”,拉美“斯”', 'zapato']
|
||||
],
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 },
|
||||
{ sound: true, textIndex: 3, lang: 'es' }
|
||||
]
|
||||
);
|
||||
|
||||
// 易混淆对比
|
||||
buildTable('confusion-table',
|
||||
['拼音', '英语', '西班牙语', '区别提醒'],
|
||||
[
|
||||
['b / p', '/b/ /p/', 'b / v', '汉语 b 不送气,英语 p 送气;西语 b/v 同音'],
|
||||
['d / t', '/d/ /t/', 'd / t', '汉语 d 不送气;英语 t 送气;西语 d 元音间变轻'],
|
||||
['g / k', '/g/ /k/', 'g / c(q)', '西语 c(a/o/u)/qu 发“克”;g(e/i) 发“哈”'],
|
||||
['zh / ch / sh', '/dʒ/ /tʃ/ /ʃ/', 'ch / ll', '拼音 zh/ch/sh 翘舌;西语 ch 接近“吃”,ll 接近“衣/日”'],
|
||||
['j / q / x', '/dʒ/ /tʃ/ /ʃ/', 'j / ch', '拼音 x 接近英语 sh,但更平;西语 j 是喉部“哈”'],
|
||||
['z / c / s', '/z/ /s/ /θ/', 'z / c(e,i) / s', '西语 z 和 c(e/i) 常发“嘶”;英语 z 是浊音'],
|
||||
['r', '/r/', 'r / rr', '拼音 r 是翘舌浊音;西语 rr 是多颤音,r 是单颤音'],
|
||||
['ü', '/juː/', 'u', '拼音 ü 圆唇前高;英语字母 u 常读“优”;西语 u 固定读“乌”'],
|
||||
['e', '/e/ /iː/', 'e', '拼音 e 近似“鹅”;英语字母 E 读“衣”;西语 e 固定“诶”'],
|
||||
['ai', '/aɪ/', 'ai', '拼音 ai 是“哀”;英语 /aɪ/ 是“爱”;西语 ai 也是“哀”']
|
||||
],
|
||||
[
|
||||
{ textIndex: 0 }, { textIndex: 1 }, { textIndex: 2 }, { textIndex: 3 }
|
||||
]
|
||||
);
|
||||
|
||||
document.addEventListener('click', function(e) {
|
||||
var btn = e.target.closest('.speak-btn');
|
||||
if (btn) {
|
||||
speakText(btn.dataset.text, btn.dataset.lang || 'es');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user