vietnamese-phonetic-transcript 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -3
- package/dist/index.cjs +765 -268
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -23
- package/dist/index.d.mts +29 -0
- package/dist/index.mjs +768 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +38 -37
- package/dist/index.d.ts +0 -27
- package/dist/index.js +0 -245
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/phonetic_transcript/phonetic_transcript.ts"],"sourcesContent":["export type PhoneticTranscript = {\n main: string\n mainCharacter: string\n medial?: string\n medialCharacter?: string\n initial?: string\n initialCharacter?: string\n final?: string\n finalCharacter?: string\n toneMark: number\n}\n\nexport type Constraint = {\n phoneme: string\n character: string\n initial?: Array<string>\n notInitial?: Array<string>\n medial?: Array<string>\n notMedial?: Array<string>\n main?: Array<string>\n notMain?: Array<string>\n final?: Array<string>\n notFinal?: Array<string>\n}\n\n// NOTE: Check the character orders, because \"t\" might be matched before \"th\"\nconst initialList = [\n { phoneme: 'b-', character: 'b' },\n { phoneme: 'm-', character: 'm' },\n { phoneme: 'f-', character: 'ph' },\n\n { phoneme: 'v-', character: 'v' },\n\n { phoneme: 'tʼ-', character: 'th' },\n\n { phoneme: 'ʈ-', character: 'tr' },\n\n { phoneme: 't-', character: 't' },\n\n { phoneme: 'd-', character: 'đ' },\n\n { phoneme: 'ɲ-', character: 'nh' },\n\n { phoneme: 'ŋ-', character: 'ngh', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'ŋ-', character: 'ng' },\n\n { phoneme: 'n-', character: 'n' },\n\n { phoneme: 'z-', character: 'd' },\n { phoneme: 'z-', character: 'gi' },\n\n { phoneme: 'ʐ-', character: 'r' },\n\n { phoneme: 's-', character: 'x' },\n { phoneme: 'ʂ-', character: 's' },\n\n { phoneme: 'l-', character: 'l' },\n\n { phoneme: 'χ-', character: 'kh' },\n\n { phoneme: 'c-', character: 'ch' },\n\n { phoneme: 'k-', character: 'k', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'k-', character: 'q', medial: ['-u-'] },\n { phoneme: 'k-', character: 'c' },\n\n { phoneme: 'ɣ-', character: 'gh', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'ɣ-', character: 'g' },\n\n { phoneme: 'h-', character: 'h' },\n] satisfies Constraint[]\n\nconst medialList = [\n {\n phoneme: '-u-',\n character: 'u',\n initial: ['k-'],\n main: ['-i-', '-e-', '-ɤ-', '-ɤ-', '-ie-'],\n },\n {\n phoneme: '-u-',\n character: 'o',\n },\n] satisfies Constraint[]\n\nconst mainList = [\n {\n phoneme: '-i-',\n character: 'y',\n medial: ['-u-', 'zero'],\n initial: ['zero'],\n final: ['zero'],\n },\n { phoneme: '-i-', character: 'i' },\n\n { phoneme: '-e-', character: 'ê' },\n\n { phoneme: '-ɛ-', character: 'e' },\n\n { phoneme: '-ɯ-', character: 'ư' },\n\n { phoneme: '-ɤ-', character: 'ơ' },\n\n { phoneme: '-a-', character: 'a' },\n\n { phoneme: '-u-', character: 'u' },\n\n { phoneme: '-o-', character: 'ô' },\n { phoneme: '-o-', character: 'ôô' },\n\n { phoneme: '-ɔ-', character: 'o' },\n { phoneme: '-ɔ-', character: 'oo' },\n\n { phoneme: '-ɤ-', character: 'â' },\n\n { phoneme: '-ɛ-', character: 'a' },\n\n { phoneme: '-ă-', character: 'a', final: ['-w', '-j'] },\n { phoneme: '-ă-', character: 'ă' },\n\n { phoneme: '-ɔ-', character: 'o', final: ['-ŋ', '-k'] },\n\n { phoneme: '-ie-', character: 'iê', notFinal: ['zero'], medial: ['zero'] },\n {\n phoneme: '-ie-',\n character: 'yê',\n notFinal: ['zero'],\n medial: ['-u-'],\n initial: ['zero'],\n },\n { phoneme: '-ie-', character: 'ia', final: ['zero'], medial: ['zero'] },\n { phoneme: '-ie-', character: 'ya', final: ['zero'], medial: ['-u-'] },\n\n { phoneme: '-ɯɤ-', character: 'ươ', notFinal: ['zero'] },\n { phoneme: '-ɯɤ-', character: 'ưa', final: ['zero'] },\n\n { phoneme: '-uo-', character: 'uô', notFinal: ['zero'] },\n { phoneme: '-uo-', character: 'ua', final: ['zero'] },\n] satisfies Constraint[]\n\nconst finalList = [\n { phoneme: '-m', character: 'm' },\n\n { phoneme: '-n', character: 'n' },\n\n { phoneme: '-p', character: 'p' },\n\n { phoneme: '-t', character: 't' },\n\n { phoneme: '-ŋ', character: 'nh', main: ['-i-', '-e-', '-ɛ-'] },\n { phoneme: '-ŋ', character: 'ng' },\n\n { phoneme: '-k', character: 'ch', main: ['-i-', '-e-', '-ɛ-'] },\n { phoneme: '-k', character: 'c' },\n\n { phoneme: '-w', character: 'o', main: ['-a-', '-ɛ-'] },\n { phoneme: '-w', character: 'u' },\n\n { phoneme: '-j', character: 'y', main: ['-ă-', '-ɤ-'] },\n { phoneme: '-j', character: 'i' },\n] satisfies Constraint[]\n\nconst toneMarkList = [\n { character: 'a', originalCharacter: 'a', toneMark: 1 },\n { character: 'à', originalCharacter: 'a', toneMark: 2 },\n { character: 'ã', originalCharacter: 'a', toneMark: 3 },\n { character: 'ả', originalCharacter: 'a', toneMark: 4 },\n { character: 'á', originalCharacter: 'a', toneMark: 5 },\n { character: 'ạ', originalCharacter: 'a', toneMark: 6 },\n\n { character: 'ă', originalCharacter: 'ă', toneMark: 1 },\n { character: 'ằ', originalCharacter: 'ă', toneMark: 2 },\n { character: 'ẵ', originalCharacter: 'ă', toneMark: 3 },\n { character: 'ẳ', originalCharacter: 'ă', toneMark: 4 },\n { character: 'ắ', originalCharacter: 'ă', toneMark: 5 },\n { character: 'ặ', originalCharacter: 'ă', toneMark: 6 },\n\n { character: 'â', originalCharacter: 'â', toneMark: 1 },\n { character: 'ầ', originalCharacter: 'â', toneMark: 2 },\n { character: 'ẫ', originalCharacter: 'â', toneMark: 3 },\n { character: 'ẩ', originalCharacter: 'â', toneMark: 4 },\n { character: 'ấ', originalCharacter: 'â', toneMark: 5 },\n { character: 'ậ', originalCharacter: 'â', toneMark: 6 },\n\n { character: 'e', originalCharacter: 'e', toneMark: 1 },\n { character: 'è', originalCharacter: 'e', toneMark: 2 },\n { character: 'ẽ', originalCharacter: 'e', toneMark: 3 },\n { character: 'ẻ', originalCharacter: 'e', toneMark: 4 },\n { character: 'é', originalCharacter: 'e', toneMark: 5 },\n { character: 'ẹ', originalCharacter: 'e', toneMark: 6 },\n\n { character: 'ê', originalCharacter: 'ê', toneMark: 1 },\n { character: 'ề', originalCharacter: 'ê', toneMark: 2 },\n { character: 'ễ', originalCharacter: 'ê', toneMark: 3 },\n { character: 'ể', originalCharacter: 'ê', toneMark: 4 },\n { character: 'ế', originalCharacter: 'ê', toneMark: 5 },\n { character: 'ệ', originalCharacter: 'ê', toneMark: 6 },\n\n { character: 'i', originalCharacter: 'i', toneMark: 1 },\n { character: 'ì', originalCharacter: 'i', toneMark: 2 },\n { character: 'ĩ', originalCharacter: 'i', toneMark: 3 },\n { character: 'ỉ', originalCharacter: 'i', toneMark: 4 },\n { character: 'í', originalCharacter: 'i', toneMark: 5 },\n { character: 'ị', originalCharacter: 'i', toneMark: 6 },\n\n { character: 'o', originalCharacter: 'o', toneMark: 1 },\n { character: 'ò', originalCharacter: 'o', toneMark: 2 },\n { character: 'õ', originalCharacter: 'o', toneMark: 3 },\n { character: 'ỏ', originalCharacter: 'o', toneMark: 4 },\n { character: 'ó', originalCharacter: 'o', toneMark: 5 },\n { character: 'ọ', originalCharacter: 'o', toneMark: 6 },\n\n { character: 'ô', originalCharacter: 'ô', toneMark: 1 },\n { character: 'ồ', originalCharacter: 'ô', toneMark: 2 },\n { character: 'ỗ', originalCharacter: 'ô', toneMark: 3 },\n { character: 'ổ', originalCharacter: 'ô', toneMark: 4 },\n { character: 'ố', originalCharacter: 'ô', toneMark: 5 },\n { character: 'ộ', originalCharacter: 'ô', toneMark: 6 },\n\n { character: 'ơ', originalCharacter: 'ơ', toneMark: 1 },\n { character: 'ờ', originalCharacter: 'ơ', toneMark: 2 },\n { character: 'ỡ', originalCharacter: 'ơ', toneMark: 3 },\n { character: 'ở', originalCharacter: 'ơ', toneMark: 4 },\n { character: 'ớ', originalCharacter: 'ơ', toneMark: 5 },\n { character: 'ợ', originalCharacter: 'ơ', toneMark: 6 },\n\n { character: 'u', originalCharacter: 'u', toneMark: 1 },\n { character: 'ù', originalCharacter: 'u', toneMark: 2 },\n { character: 'ũ', originalCharacter: 'u', toneMark: 3 },\n { character: 'ủ', originalCharacter: 'u', toneMark: 4 },\n { character: 'ú', originalCharacter: 'u', toneMark: 5 },\n { character: 'ụ', originalCharacter: 'u', toneMark: 6 },\n\n { character: 'ư', originalCharacter: 'ư', toneMark: 1 },\n { character: 'ừ', originalCharacter: 'ư', toneMark: 2 },\n { character: 'ữ', originalCharacter: 'ư', toneMark: 3 },\n { character: 'ử', originalCharacter: 'ư', toneMark: 4 },\n { character: 'ứ', originalCharacter: 'ư', toneMark: 5 },\n { character: 'ự', originalCharacter: 'ư', toneMark: 6 },\n\n { character: 'y', originalCharacter: 'y', toneMark: 1 },\n { character: 'ỳ', originalCharacter: 'y', toneMark: 2 },\n { character: 'ỹ', originalCharacter: 'y', toneMark: 3 },\n { character: 'ỷ', originalCharacter: 'y', toneMark: 4 },\n { character: 'ý', originalCharacter: 'y', toneMark: 5 },\n { character: 'ỵ', originalCharacter: 'y', toneMark: 6 },\n]\n\nfunction transcriptToString(transcript: PhoneticTranscript): string {\n if (!transcript.main || !transcript.toneMark) {\n throw new Error('Invalid phonetic transcript')\n }\n\n return (\n (((transcript.initial?.replaceAll('-', '')) ?? '') || '')\n + (((transcript?.medial?.replaceAll('-', '')) ?? '') || '')\n + transcript.main.replaceAll('-', '')\n + (((transcript.final?.replaceAll('-', '')) ?? '') || '')\n + transcript.toneMark.toString()\n )\n}\n\nfunction buildPhoneticTranscript(word: string): PhoneticTranscript {\n word = word.toLowerCase()\n\n const transcript = {\n toneMark: 1,\n } as PhoneticTranscript\n\n // NOTE: Check tone mark\n toneMarkList.forEach((toneMark) => {\n if (toneMark.toneMark !== 1 && word.includes(toneMark.character)) {\n transcript.toneMark = toneMark.toneMark\n\n word = word.replace(toneMark.character, toneMark.originalCharacter)\n }\n })\n\n // NOTE: Check initial\n initialList.forEach((initial) => {\n if (\n word.startsWith(initial.character)\n && word.length - initial.character.length > 0\n ) {\n transcript.initial = initial.phoneme\n transcript.initialCharacter = initial.character\n\n word = word.slice(initial.character.length)\n }\n })\n\n // NOTE: Check final\n finalList.forEach((final) => {\n if (\n word.endsWith(final.character)\n && word.length - final.character.length > 0\n ) {\n transcript.final = final.phoneme\n transcript.finalCharacter = final.character\n\n word = word.slice(0, word.length - final.character.length)\n }\n })\n\n // NOTE: Check medial\n if (word.length > 1 && word !== 'oo') {\n if (\n word.startsWith('u')\n && (transcript.initialCharacter === 'q'\n || ['y', 'i', 'ê', 'ơ', 'â', 'iê', 'yê', 'ia', 'ya'].includes(\n word.slice(1),\n ))\n ) {\n transcript.medial = medialList[0]!.phoneme\n transcript.medialCharacter = medialList[0]!.character\n\n word = word.slice(1)\n }\n else if (word.startsWith('o')) {\n transcript.medial = medialList[1]!.phoneme\n transcript.medialCharacter = medialList[1]!.character\n\n word = word.slice(1)\n }\n }\n\n if (\n word === 'o'\n && (transcript.finalCharacter !== undefined)\n && ['nh', 'ng', 'ch', 'c'].includes(transcript.finalCharacter)\n ) {\n const main = mainList.filter(main => main.phoneme === '-ɔ-')\n\n transcript.main = main[0]!.phoneme\n transcript.mainCharacter = main[0]!.character\n\n word = word.slice(1)\n }\n else {\n // NOTE: Check main\n mainList.forEach((main) => {\n if (word === main.character) {\n transcript.main = main.phoneme\n transcript.mainCharacter = main.character\n\n word = word.slice(main.character.length)\n }\n })\n }\n\n return transcript\n}\n\nexport function phoneticTranscriptWord(word: string) {\n return word.replaceAll(/\\p{L}+/gu, (word) => {\n try {\n return transcriptToString(buildPhoneticTranscript(word))\n }\n catch {\n return word\n }\n })\n}\n\nexport function phoneticTranscriptSentence(sentence: string): string {\n return sentence\n .split(' ')\n .map(word => phoneticTranscriptWord(word))\n .join(' ')\n}\n"],"mappings":"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AAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CAEtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UAAU;CAAE;CACtD;EAAE,WAAW;EAAK,mBAAmB;EAAK,UA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"}
|
package/package.json
CHANGED
|
@@ -1,54 +1,55 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vietnamese-phonetic-transcript",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"description": "A library for converting Vietnamese text to its phonetic transcription.",
|
|
6
|
+
"author": "DuckyMomo20012",
|
|
7
|
+
"license": "CC-BY-NC-SA-4.0",
|
|
6
8
|
"repository": {
|
|
7
9
|
"type": "git",
|
|
8
10
|
"url": "git+https://github.com/DuckyMomo20012/vietnamese-phonetic-transcript.git"
|
|
9
11
|
},
|
|
10
|
-
"type": "module",
|
|
11
|
-
"main": "./dist/index.js",
|
|
12
|
-
"module": "./dist/index.mjs",
|
|
13
|
-
"types": "./dist/index.d.ts",
|
|
14
|
-
"files": [
|
|
15
|
-
"dist"
|
|
16
|
-
],
|
|
17
12
|
"exports": {
|
|
18
|
-
"./package.json": "./package.json",
|
|
19
13
|
".": {
|
|
14
|
+
"types": {
|
|
15
|
+
"import": "./dist/index.d.mts",
|
|
16
|
+
"require": "./dist/index.d.cts"
|
|
17
|
+
},
|
|
20
18
|
"import": "./dist/index.js",
|
|
21
|
-
"
|
|
22
|
-
}
|
|
19
|
+
"require": "./dist/index.cjs"
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
23
22
|
},
|
|
23
|
+
"main": "./dist/index.cjs",
|
|
24
|
+
"module": "./dist/index.js",
|
|
25
|
+
"types": "./dist/index.d.mts",
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
24
29
|
"devDependencies": {
|
|
25
|
-
"@
|
|
26
|
-
"@
|
|
27
|
-
"@commitlint/
|
|
28
|
-
"@
|
|
29
|
-
"@
|
|
30
|
-
"@
|
|
31
|
-
"eslint": "
|
|
32
|
-
"eslint-
|
|
33
|
-
"eslint-config-prettier": "9.1.2",
|
|
34
|
-
"eslint-import-resolver-typescript": "3.10.1",
|
|
35
|
-
"eslint-plugin-import": "2.32.0",
|
|
36
|
-
"eslint-plugin-jsx-a11y": "6.10.2",
|
|
37
|
-
"eslint-plugin-prettier": "5.5.4",
|
|
38
|
-
"eslint-plugin-react": "7.37.5",
|
|
39
|
-
"eslint-plugin-react-hooks": "5.2.0",
|
|
30
|
+
"@antfu/eslint-config": "9.3.0",
|
|
31
|
+
"@arethetypeswrong/cli": "0.18.5",
|
|
32
|
+
"@commitlint/cli": "21.2.2",
|
|
33
|
+
"@commitlint/config-conventional": "21.2.2",
|
|
34
|
+
"@types/node": "26.2.0",
|
|
35
|
+
"@vitest/eslint-plugin": "1.6.27",
|
|
36
|
+
"eslint": "10.9.0",
|
|
37
|
+
"eslint-plugin-format": "2.0.1",
|
|
40
38
|
"husky": "9.1.7",
|
|
41
|
-
"lint-staged": "
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"vitest": "3.2.4"
|
|
39
|
+
"lint-staged": "17.3.0",
|
|
40
|
+
"tsdown": "0.22.14",
|
|
41
|
+
"typescript": "6.0.3",
|
|
42
|
+
"vitest": "4.1.11"
|
|
46
43
|
},
|
|
47
44
|
"scripts": {
|
|
48
|
-
"lint": "
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
45
|
+
"lint": "eslint .",
|
|
46
|
+
"lint:fix": "eslint . --fix",
|
|
47
|
+
"build": "tsdown",
|
|
48
|
+
"typecheck": "tsc --noEmit",
|
|
49
|
+
"test": "vitest",
|
|
50
|
+
"test:ui": "vitest --ui",
|
|
51
|
+
"test:run": "vitest run",
|
|
52
|
+
"test:coverage": "vitest run --coverage",
|
|
53
|
+
"check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm"
|
|
53
54
|
}
|
|
54
55
|
}
|
package/dist/index.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
type PhoneticTranscript = {
|
|
2
|
-
main: string;
|
|
3
|
-
mainCharacter: string;
|
|
4
|
-
medial?: string;
|
|
5
|
-
medialCharacter?: string;
|
|
6
|
-
initial?: string;
|
|
7
|
-
initialCharacter?: string;
|
|
8
|
-
final?: string;
|
|
9
|
-
finalCharacter?: string;
|
|
10
|
-
toneMark: number;
|
|
11
|
-
};
|
|
12
|
-
type Constraint = {
|
|
13
|
-
phoneme: string;
|
|
14
|
-
character: string;
|
|
15
|
-
initial?: Array<string>;
|
|
16
|
-
notInitial?: Array<string>;
|
|
17
|
-
medial?: Array<string>;
|
|
18
|
-
notMedial?: Array<string>;
|
|
19
|
-
main?: Array<string>;
|
|
20
|
-
notMain?: Array<string>;
|
|
21
|
-
final?: Array<string>;
|
|
22
|
-
notFinal?: Array<string>;
|
|
23
|
-
};
|
|
24
|
-
declare const phoneticTranscriptWord: (word: string) => string;
|
|
25
|
-
declare const phoneticTranscriptSentence: (sentence: string) => string;
|
|
26
|
-
|
|
27
|
-
export { type Constraint, type PhoneticTranscript, phoneticTranscriptSentence, phoneticTranscriptWord };
|
package/dist/index.js
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
// lib/phonetic_transcript/phonetic_transcript.ts
|
|
2
|
-
var initialList = [
|
|
3
|
-
{ phoneme: "b-", character: "b" },
|
|
4
|
-
{ phoneme: "m-", character: "m" },
|
|
5
|
-
{ phoneme: "f-", character: "ph" },
|
|
6
|
-
{ phoneme: "v-", character: "v" },
|
|
7
|
-
{ phoneme: "t\u02BC-", character: "th" },
|
|
8
|
-
{ phoneme: "\u0288-", character: "tr" },
|
|
9
|
-
{ phoneme: "t-", character: "t" },
|
|
10
|
-
{ phoneme: "d-", character: "\u0111" },
|
|
11
|
-
{ phoneme: "\u0272-", character: "nh" },
|
|
12
|
-
{ phoneme: "\u014B-", character: "ngh", main: ["-i-", "-e-", "-\u025B-", "-ie-"] },
|
|
13
|
-
{ phoneme: "\u014B-", character: "ng" },
|
|
14
|
-
{ phoneme: "n-", character: "n" },
|
|
15
|
-
{ phoneme: "z-", character: "d" },
|
|
16
|
-
{ phoneme: "z-", character: "gi" },
|
|
17
|
-
{ phoneme: "\u0290-", character: "r" },
|
|
18
|
-
{ phoneme: "s-", character: "x" },
|
|
19
|
-
{ phoneme: "\u0282-", character: "s" },
|
|
20
|
-
{ phoneme: "l-", character: "l" },
|
|
21
|
-
{ phoneme: "\u03C7-", character: "kh" },
|
|
22
|
-
{ phoneme: "c-", character: "ch" },
|
|
23
|
-
{ phoneme: "k-", character: "k", main: ["-i-", "-e-", "-\u025B-", "-ie-"] },
|
|
24
|
-
{ phoneme: "k-", character: "q", medial: ["-u\uE608-"] },
|
|
25
|
-
{ phoneme: "k-", character: "c" },
|
|
26
|
-
{ phoneme: "\u0263-", character: "gh", main: ["-i-", "-e-", "-\u025B-", "-ie-"] },
|
|
27
|
-
{ phoneme: "\u0263-", character: "g" },
|
|
28
|
-
{ phoneme: "h-", character: "h" }
|
|
29
|
-
];
|
|
30
|
-
var medialList = [
|
|
31
|
-
{
|
|
32
|
-
phoneme: "-u\uE608-",
|
|
33
|
-
character: "u",
|
|
34
|
-
initial: ["k-"],
|
|
35
|
-
main: ["-i-", "-e-", "-\u0264-", "-\u0264\uE60C-", "-ie-"]
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
phoneme: "-u\uE608-",
|
|
39
|
-
character: "o"
|
|
40
|
-
}
|
|
41
|
-
];
|
|
42
|
-
var mainList = [
|
|
43
|
-
{
|
|
44
|
-
phoneme: "-i-",
|
|
45
|
-
character: "y",
|
|
46
|
-
medial: ["-u\uE608-", "zero"],
|
|
47
|
-
initial: ["zero"],
|
|
48
|
-
final: ["zero"]
|
|
49
|
-
},
|
|
50
|
-
{ phoneme: "-i-", character: "i" },
|
|
51
|
-
{ phoneme: "-e-", character: "\xEA" },
|
|
52
|
-
{ phoneme: "-\u025B-", character: "e" },
|
|
53
|
-
{ phoneme: "-\u026F-", character: "\u01B0" },
|
|
54
|
-
{ phoneme: "-\u0264-", character: "\u01A1" },
|
|
55
|
-
{ phoneme: "-a-", character: "a" },
|
|
56
|
-
{ phoneme: "-u-", character: "u" },
|
|
57
|
-
{ phoneme: "-o-", character: "\xF4" },
|
|
58
|
-
{ phoneme: "-o-", character: "\xF4\xF4" },
|
|
59
|
-
{ phoneme: "-\u0254-", character: "o" },
|
|
60
|
-
{ phoneme: "-\u0254-", character: "oo" },
|
|
61
|
-
{ phoneme: "-\u0264\uE60C-", character: "\xE2" },
|
|
62
|
-
{ phoneme: "-\u025B\uE60C-", character: "a" },
|
|
63
|
-
{ phoneme: "-\u0103-", character: "a", final: ["-w", "-j"] },
|
|
64
|
-
{ phoneme: "-\u0103-", character: "\u0103" },
|
|
65
|
-
{ phoneme: "-\u0254\uE60C-", character: "o", final: ["-\u014B", "-k"] },
|
|
66
|
-
{ phoneme: "-ie-", character: "i\xEA", notFinal: ["zero"], medial: ["zero"] },
|
|
67
|
-
{
|
|
68
|
-
phoneme: "-ie-",
|
|
69
|
-
character: "y\xEA",
|
|
70
|
-
notFinal: ["zero"],
|
|
71
|
-
medial: ["-u\uE608-"],
|
|
72
|
-
initial: ["zero"]
|
|
73
|
-
},
|
|
74
|
-
{ phoneme: "-ie-", character: "ia", final: ["zero"], medial: ["zero"] },
|
|
75
|
-
{ phoneme: "-ie-", character: "ya", final: ["zero"], medial: ["-u\uE608-"] },
|
|
76
|
-
{ phoneme: "-\u026F\u0264-", character: "\u01B0\u01A1", notFinal: ["zero"] },
|
|
77
|
-
{ phoneme: "-\u026F\u0264-", character: "\u01B0a", final: ["zero"] },
|
|
78
|
-
{ phoneme: "-uo-", character: "u\xF4", notFinal: ["zero"] },
|
|
79
|
-
{ phoneme: "-uo-", character: "ua", final: ["zero"] }
|
|
80
|
-
];
|
|
81
|
-
var finalList = [
|
|
82
|
-
{ phoneme: "-m", character: "m" },
|
|
83
|
-
{ phoneme: "-n", character: "n" },
|
|
84
|
-
{ phoneme: "-p", character: "p" },
|
|
85
|
-
{ phoneme: "-t", character: "t" },
|
|
86
|
-
{ phoneme: "-\u014B", character: "nh", main: ["-i-", "-e-", "-\u025B\uE60C-"] },
|
|
87
|
-
{ phoneme: "-\u014B", character: "ng" },
|
|
88
|
-
{ phoneme: "-k", character: "ch", main: ["-i-", "-e-", "-\u025B\uE60C-"] },
|
|
89
|
-
{ phoneme: "-k", character: "c" },
|
|
90
|
-
{ phoneme: "-w", character: "o", main: ["-a-", "-\u025B-"] },
|
|
91
|
-
{ phoneme: "-w", character: "u" },
|
|
92
|
-
{ phoneme: "-j", character: "y", main: ["-\u0103-", "-\u0264\uE60C-"] },
|
|
93
|
-
{ phoneme: "-j", character: "i" }
|
|
94
|
-
];
|
|
95
|
-
var toneMarkList = [
|
|
96
|
-
{ character: "a", originalCharacter: "a", toneMark: 1 },
|
|
97
|
-
{ character: "\xE0", originalCharacter: "a", toneMark: 2 },
|
|
98
|
-
{ character: "\xE3", originalCharacter: "a", toneMark: 3 },
|
|
99
|
-
{ character: "\u1EA3", originalCharacter: "a", toneMark: 4 },
|
|
100
|
-
{ character: "\xE1", originalCharacter: "a", toneMark: 5 },
|
|
101
|
-
{ character: "\u1EA1", originalCharacter: "a", toneMark: 6 },
|
|
102
|
-
{ character: "\u0103", originalCharacter: "\u0103", toneMark: 1 },
|
|
103
|
-
{ character: "\u1EB1", originalCharacter: "\u0103", toneMark: 2 },
|
|
104
|
-
{ character: "\u1EB5", originalCharacter: "\u0103", toneMark: 3 },
|
|
105
|
-
{ character: "\u1EB3", originalCharacter: "\u0103", toneMark: 4 },
|
|
106
|
-
{ character: "\u1EAF", originalCharacter: "\u0103", toneMark: 5 },
|
|
107
|
-
{ character: "\u1EB7", originalCharacter: "\u0103", toneMark: 6 },
|
|
108
|
-
{ character: "\xE2", originalCharacter: "\xE2", toneMark: 1 },
|
|
109
|
-
{ character: "\u1EA7", originalCharacter: "\xE2", toneMark: 2 },
|
|
110
|
-
{ character: "\u1EAB", originalCharacter: "\xE2", toneMark: 3 },
|
|
111
|
-
{ character: "\u1EA9", originalCharacter: "\xE2", toneMark: 4 },
|
|
112
|
-
{ character: "\u1EA5", originalCharacter: "\xE2", toneMark: 5 },
|
|
113
|
-
{ character: "\u1EAD", originalCharacter: "\xE2", toneMark: 6 },
|
|
114
|
-
{ character: "e", originalCharacter: "e", toneMark: 1 },
|
|
115
|
-
{ character: "\xE8", originalCharacter: "e", toneMark: 2 },
|
|
116
|
-
{ character: "\u1EBD", originalCharacter: "e", toneMark: 3 },
|
|
117
|
-
{ character: "\u1EBB", originalCharacter: "e", toneMark: 4 },
|
|
118
|
-
{ character: "\xE9", originalCharacter: "e", toneMark: 5 },
|
|
119
|
-
{ character: "\u1EB9", originalCharacter: "e", toneMark: 6 },
|
|
120
|
-
{ character: "\xEA", originalCharacter: "\xEA", toneMark: 1 },
|
|
121
|
-
{ character: "\u1EC1", originalCharacter: "\xEA", toneMark: 2 },
|
|
122
|
-
{ character: "\u1EC5", originalCharacter: "\xEA", toneMark: 3 },
|
|
123
|
-
{ character: "\u1EC3", originalCharacter: "\xEA", toneMark: 4 },
|
|
124
|
-
{ character: "\u1EBF", originalCharacter: "\xEA", toneMark: 5 },
|
|
125
|
-
{ character: "\u1EC7", originalCharacter: "\xEA", toneMark: 6 },
|
|
126
|
-
{ character: "i", originalCharacter: "i", toneMark: 1 },
|
|
127
|
-
{ character: "\xEC", originalCharacter: "i", toneMark: 2 },
|
|
128
|
-
{ character: "\u0129", originalCharacter: "i", toneMark: 3 },
|
|
129
|
-
{ character: "\u1EC9", originalCharacter: "i", toneMark: 4 },
|
|
130
|
-
{ character: "\xED", originalCharacter: "i", toneMark: 5 },
|
|
131
|
-
{ character: "\u1ECB", originalCharacter: "i", toneMark: 6 },
|
|
132
|
-
{ character: "o", originalCharacter: "o", toneMark: 1 },
|
|
133
|
-
{ character: "\xF2", originalCharacter: "o", toneMark: 2 },
|
|
134
|
-
{ character: "\xF5", originalCharacter: "o", toneMark: 3 },
|
|
135
|
-
{ character: "\u1ECF", originalCharacter: "o", toneMark: 4 },
|
|
136
|
-
{ character: "\xF3", originalCharacter: "o", toneMark: 5 },
|
|
137
|
-
{ character: "\u1ECD", originalCharacter: "o", toneMark: 6 },
|
|
138
|
-
{ character: "\xF4", originalCharacter: "\xF4", toneMark: 1 },
|
|
139
|
-
{ character: "\u1ED3", originalCharacter: "\xF4", toneMark: 2 },
|
|
140
|
-
{ character: "\u1ED7", originalCharacter: "\xF4", toneMark: 3 },
|
|
141
|
-
{ character: "\u1ED5", originalCharacter: "\xF4", toneMark: 4 },
|
|
142
|
-
{ character: "\u1ED1", originalCharacter: "\xF4", toneMark: 5 },
|
|
143
|
-
{ character: "\u1ED9", originalCharacter: "\xF4", toneMark: 6 },
|
|
144
|
-
{ character: "\u01A1", originalCharacter: "\u01A1", toneMark: 1 },
|
|
145
|
-
{ character: "\u1EDD", originalCharacter: "\u01A1", toneMark: 2 },
|
|
146
|
-
{ character: "\u1EE1", originalCharacter: "\u01A1", toneMark: 3 },
|
|
147
|
-
{ character: "\u1EDF", originalCharacter: "\u01A1", toneMark: 4 },
|
|
148
|
-
{ character: "\u1EDB", originalCharacter: "\u01A1", toneMark: 5 },
|
|
149
|
-
{ character: "\u1EE3", originalCharacter: "\u01A1", toneMark: 6 },
|
|
150
|
-
{ character: "u", originalCharacter: "u", toneMark: 1 },
|
|
151
|
-
{ character: "\xF9", originalCharacter: "u", toneMark: 2 },
|
|
152
|
-
{ character: "\u0169", originalCharacter: "u", toneMark: 3 },
|
|
153
|
-
{ character: "\u1EE7", originalCharacter: "u", toneMark: 4 },
|
|
154
|
-
{ character: "\xFA", originalCharacter: "u", toneMark: 5 },
|
|
155
|
-
{ character: "\u1EE5", originalCharacter: "u", toneMark: 6 },
|
|
156
|
-
{ character: "\u01B0", originalCharacter: "\u01B0", toneMark: 1 },
|
|
157
|
-
{ character: "\u1EEB", originalCharacter: "\u01B0", toneMark: 2 },
|
|
158
|
-
{ character: "\u1EEF", originalCharacter: "\u01B0", toneMark: 3 },
|
|
159
|
-
{ character: "\u1EED", originalCharacter: "\u01B0", toneMark: 4 },
|
|
160
|
-
{ character: "\u1EE9", originalCharacter: "\u01B0", toneMark: 5 },
|
|
161
|
-
{ character: "\u1EF1", originalCharacter: "\u01B0", toneMark: 6 },
|
|
162
|
-
{ character: "y", originalCharacter: "y", toneMark: 1 },
|
|
163
|
-
{ character: "\u1EF3", originalCharacter: "y", toneMark: 2 },
|
|
164
|
-
{ character: "\u1EF9", originalCharacter: "y", toneMark: 3 },
|
|
165
|
-
{ character: "\u1EF7", originalCharacter: "y", toneMark: 4 },
|
|
166
|
-
{ character: "\xFD", originalCharacter: "y", toneMark: 5 },
|
|
167
|
-
{ character: "\u1EF5", originalCharacter: "y", toneMark: 6 }
|
|
168
|
-
];
|
|
169
|
-
var transcriptToString = (transcript) => {
|
|
170
|
-
if (!transcript.main || !transcript.toneMark) {
|
|
171
|
-
throw new Error("Invalid phonetic transcript");
|
|
172
|
-
}
|
|
173
|
-
return (transcript.initial?.replaceAll("-", "") || "") + (transcript?.medial?.replaceAll("-", "") || "") + transcript.main.replaceAll("-", "") + (transcript.final?.replaceAll("-", "") || "") + transcript.toneMark.toString();
|
|
174
|
-
};
|
|
175
|
-
var buildPhoneticTranscript = (word) => {
|
|
176
|
-
word = word.toLowerCase();
|
|
177
|
-
let transcript = {
|
|
178
|
-
toneMark: 1
|
|
179
|
-
};
|
|
180
|
-
toneMarkList.forEach((toneMark) => {
|
|
181
|
-
if (toneMark.toneMark !== 1 && word.includes(toneMark.character)) {
|
|
182
|
-
transcript.toneMark = toneMark.toneMark;
|
|
183
|
-
word = word.replace(toneMark.character, toneMark.originalCharacter);
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
initialList.forEach((initial) => {
|
|
187
|
-
if (word.startsWith(initial.character) && word.length - initial.character.length > 0) {
|
|
188
|
-
transcript.initial = initial.phoneme;
|
|
189
|
-
transcript.initialCharacter = initial.character;
|
|
190
|
-
word = word.slice(initial.character.length);
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
finalList.forEach((final) => {
|
|
194
|
-
if (word.endsWith(final.character) && word.length - final.character.length > 0) {
|
|
195
|
-
transcript.final = final.phoneme;
|
|
196
|
-
transcript.finalCharacter = final.character;
|
|
197
|
-
word = word.slice(0, word.length - final.character.length);
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
if (word.length > 1 && word !== "oo") {
|
|
201
|
-
if (word.startsWith("u") && (transcript.initialCharacter === "q" || ["y", "i", "\xEA", "\u01A1", "\xE2", "i\xEA", "y\xEA", "ia", "ya"].includes(
|
|
202
|
-
word.slice(1)
|
|
203
|
-
))) {
|
|
204
|
-
transcript.medial = medialList[0].phoneme;
|
|
205
|
-
transcript.medialCharacter = medialList[0].character;
|
|
206
|
-
word = word.slice(1);
|
|
207
|
-
} else if (word.startsWith("o")) {
|
|
208
|
-
transcript.medial = medialList[1].phoneme;
|
|
209
|
-
transcript.medialCharacter = medialList[1].character;
|
|
210
|
-
word = word.slice(1);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
if (word === "o" && transcript.finalCharacter && ["nh", "ng", "ch", "c"].includes(transcript.finalCharacter)) {
|
|
214
|
-
const main = mainList.filter((main2) => main2.phoneme === "-\u0254\uE60C-");
|
|
215
|
-
transcript.main = main[0].phoneme;
|
|
216
|
-
transcript.mainCharacter = main[0].character;
|
|
217
|
-
word = word.slice(1);
|
|
218
|
-
} else {
|
|
219
|
-
mainList.forEach((main) => {
|
|
220
|
-
if (word === main.character) {
|
|
221
|
-
transcript.main = main.phoneme;
|
|
222
|
-
transcript.mainCharacter = main.character;
|
|
223
|
-
word = word.slice(main.character.length);
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
return transcript;
|
|
228
|
-
};
|
|
229
|
-
var phoneticTranscriptWord = (word) => {
|
|
230
|
-
return word.replaceAll(/[^\P{L}]+/gmu, (word2) => {
|
|
231
|
-
try {
|
|
232
|
-
return transcriptToString(buildPhoneticTranscript(word2));
|
|
233
|
-
} catch (e) {
|
|
234
|
-
return word2;
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
};
|
|
238
|
-
var phoneticTranscriptSentence = (sentence) => {
|
|
239
|
-
return sentence.split(" ").map((word) => phoneticTranscriptWord(word)).join(" ");
|
|
240
|
-
};
|
|
241
|
-
export {
|
|
242
|
-
phoneticTranscriptSentence,
|
|
243
|
-
phoneticTranscriptWord
|
|
244
|
-
};
|
|
245
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/phonetic_transcript/phonetic_transcript.ts"],"sourcesContent":["export type PhoneticTranscript = {\n main: string;\n mainCharacter: string;\n medial?: string;\n medialCharacter?: string;\n initial?: string;\n initialCharacter?: string;\n final?: string;\n finalCharacter?: string;\n toneMark: number;\n};\n\nexport type Constraint = {\n phoneme: string;\n character: string;\n initial?: Array<string>;\n notInitial?: Array<string>;\n medial?: Array<string>;\n notMedial?: Array<string>;\n main?: Array<string>;\n notMain?: Array<string>;\n final?: Array<string>;\n notFinal?: Array<string>;\n};\n\n// NOTE: Check the character orders, because \"t\" might be matched before \"th\"\nconst initialList = [\n { phoneme: 'b-', character: 'b' },\n { phoneme: 'm-', character: 'm' },\n { phoneme: 'f-', character: 'ph' },\n\n { phoneme: 'v-', character: 'v' },\n\n { phoneme: 'tʼ-', character: 'th' },\n\n { phoneme: 'ʈ-', character: 'tr' },\n\n { phoneme: 't-', character: 't' },\n\n { phoneme: 'd-', character: 'đ' },\n\n { phoneme: 'ɲ-', character: 'nh' },\n\n { phoneme: 'ŋ-', character: 'ngh', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'ŋ-', character: 'ng' },\n\n { phoneme: 'n-', character: 'n' },\n\n { phoneme: 'z-', character: 'd' },\n { phoneme: 'z-', character: 'gi' },\n\n { phoneme: 'ʐ-', character: 'r' },\n\n { phoneme: 's-', character: 'x' },\n { phoneme: 'ʂ-', character: 's' },\n\n { phoneme: 'l-', character: 'l' },\n\n { phoneme: 'χ-', character: 'kh' },\n\n { phoneme: 'c-', character: 'ch' },\n\n { phoneme: 'k-', character: 'k', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'k-', character: 'q', medial: ['-u-'] },\n { phoneme: 'k-', character: 'c' },\n\n { phoneme: 'ɣ-', character: 'gh', main: ['-i-', '-e-', '-ɛ-', '-ie-'] },\n { phoneme: 'ɣ-', character: 'g' },\n\n { phoneme: 'h-', character: 'h' },\n] satisfies Constraint[];\n\nconst medialList = [\n {\n phoneme: '-u-',\n character: 'u',\n initial: ['k-'],\n main: ['-i-', '-e-', '-ɤ-', '-ɤ-', '-ie-'],\n },\n {\n phoneme: '-u-',\n character: 'o',\n },\n] satisfies Constraint[];\n\nconst mainList = [\n {\n phoneme: '-i-',\n character: 'y',\n medial: ['-u-', 'zero'],\n initial: ['zero'],\n final: ['zero'],\n },\n { phoneme: '-i-', character: 'i' },\n\n { phoneme: '-e-', character: 'ê' },\n\n { phoneme: '-ɛ-', character: 'e' },\n\n { phoneme: '-ɯ-', character: 'ư' },\n\n { phoneme: '-ɤ-', character: 'ơ' },\n\n { phoneme: '-a-', character: 'a' },\n\n { phoneme: '-u-', character: 'u' },\n\n { phoneme: '-o-', character: 'ô' },\n { phoneme: '-o-', character: 'ôô' },\n\n { phoneme: '-ɔ-', character: 'o' },\n { phoneme: '-ɔ-', character: 'oo' },\n\n { phoneme: '-ɤ-', character: 'â' },\n\n { phoneme: '-ɛ-', character: 'a' },\n\n { phoneme: '-ă-', character: 'a', final: ['-w', '-j'] },\n { phoneme: '-ă-', character: 'ă' },\n\n { phoneme: '-ɔ-', character: 'o', final: ['-ŋ', '-k'] },\n\n { phoneme: '-ie-', character: 'iê', notFinal: ['zero'], medial: ['zero'] },\n {\n phoneme: '-ie-',\n character: 'yê',\n notFinal: ['zero'],\n medial: ['-u-'],\n initial: ['zero'],\n },\n { phoneme: '-ie-', character: 'ia', final: ['zero'], medial: ['zero'] },\n { phoneme: '-ie-', character: 'ya', final: ['zero'], medial: ['-u-'] },\n\n { phoneme: '-ɯɤ-', character: 'ươ', notFinal: ['zero'] },\n { phoneme: '-ɯɤ-', character: 'ưa', final: ['zero'] },\n\n { phoneme: '-uo-', character: 'uô', notFinal: ['zero'] },\n { phoneme: '-uo-', character: 'ua', final: ['zero'] },\n] satisfies Constraint[];\n\nconst finalList = [\n { phoneme: '-m', character: 'm' },\n\n { phoneme: '-n', character: 'n' },\n\n { phoneme: '-p', character: 'p' },\n\n { phoneme: '-t', character: 't' },\n\n { phoneme: '-ŋ', character: 'nh', main: ['-i-', '-e-', '-ɛ-'] },\n { phoneme: '-ŋ', character: 'ng' },\n\n { phoneme: '-k', character: 'ch', main: ['-i-', '-e-', '-ɛ-'] },\n { phoneme: '-k', character: 'c' },\n\n { phoneme: '-w', character: 'o', main: ['-a-', '-ɛ-'] },\n { phoneme: '-w', character: 'u' },\n\n { phoneme: '-j', character: 'y', main: ['-ă-', '-ɤ-'] },\n { phoneme: '-j', character: 'i' },\n] satisfies Constraint[];\n\nconst toneMarkList = [\n { character: 'a', originalCharacter: 'a', toneMark: 1 },\n { character: 'à', originalCharacter: 'a', toneMark: 2 },\n { character: 'ã', originalCharacter: 'a', toneMark: 3 },\n { character: 'ả', originalCharacter: 'a', toneMark: 4 },\n { character: 'á', originalCharacter: 'a', toneMark: 5 },\n { character: 'ạ', originalCharacter: 'a', toneMark: 6 },\n\n { character: 'ă', originalCharacter: 'ă', toneMark: 1 },\n { character: 'ằ', originalCharacter: 'ă', toneMark: 2 },\n { character: 'ẵ', originalCharacter: 'ă', toneMark: 3 },\n { character: 'ẳ', originalCharacter: 'ă', toneMark: 4 },\n { character: 'ắ', originalCharacter: 'ă', toneMark: 5 },\n { character: 'ặ', originalCharacter: 'ă', toneMark: 6 },\n\n { character: 'â', originalCharacter: 'â', toneMark: 1 },\n { character: 'ầ', originalCharacter: 'â', toneMark: 2 },\n { character: 'ẫ', originalCharacter: 'â', toneMark: 3 },\n { character: 'ẩ', originalCharacter: 'â', toneMark: 4 },\n { character: 'ấ', originalCharacter: 'â', toneMark: 5 },\n { character: 'ậ', originalCharacter: 'â', toneMark: 6 },\n\n { character: 'e', originalCharacter: 'e', toneMark: 1 },\n { character: 'è', originalCharacter: 'e', toneMark: 2 },\n { character: 'ẽ', originalCharacter: 'e', toneMark: 3 },\n { character: 'ẻ', originalCharacter: 'e', toneMark: 4 },\n { character: 'é', originalCharacter: 'e', toneMark: 5 },\n { character: 'ẹ', originalCharacter: 'e', toneMark: 6 },\n\n { character: 'ê', originalCharacter: 'ê', toneMark: 1 },\n { character: 'ề', originalCharacter: 'ê', toneMark: 2 },\n { character: 'ễ', originalCharacter: 'ê', toneMark: 3 },\n { character: 'ể', originalCharacter: 'ê', toneMark: 4 },\n { character: 'ế', originalCharacter: 'ê', toneMark: 5 },\n { character: 'ệ', originalCharacter: 'ê', toneMark: 6 },\n\n { character: 'i', originalCharacter: 'i', toneMark: 1 },\n { character: 'ì', originalCharacter: 'i', toneMark: 2 },\n { character: 'ĩ', originalCharacter: 'i', toneMark: 3 },\n { character: 'ỉ', originalCharacter: 'i', toneMark: 4 },\n { character: 'í', originalCharacter: 'i', toneMark: 5 },\n { character: 'ị', originalCharacter: 'i', toneMark: 6 },\n\n { character: 'o', originalCharacter: 'o', toneMark: 1 },\n { character: 'ò', originalCharacter: 'o', toneMark: 2 },\n { character: 'õ', originalCharacter: 'o', toneMark: 3 },\n { character: 'ỏ', originalCharacter: 'o', toneMark: 4 },\n { character: 'ó', originalCharacter: 'o', toneMark: 5 },\n { character: 'ọ', originalCharacter: 'o', toneMark: 6 },\n\n { character: 'ô', originalCharacter: 'ô', toneMark: 1 },\n { character: 'ồ', originalCharacter: 'ô', toneMark: 2 },\n { character: 'ỗ', originalCharacter: 'ô', toneMark: 3 },\n { character: 'ổ', originalCharacter: 'ô', toneMark: 4 },\n { character: 'ố', originalCharacter: 'ô', toneMark: 5 },\n { character: 'ộ', originalCharacter: 'ô', toneMark: 6 },\n\n { character: 'ơ', originalCharacter: 'ơ', toneMark: 1 },\n { character: 'ờ', originalCharacter: 'ơ', toneMark: 2 },\n { character: 'ỡ', originalCharacter: 'ơ', toneMark: 3 },\n { character: 'ở', originalCharacter: 'ơ', toneMark: 4 },\n { character: 'ớ', originalCharacter: 'ơ', toneMark: 5 },\n { character: 'ợ', originalCharacter: 'ơ', toneMark: 6 },\n\n { character: 'u', originalCharacter: 'u', toneMark: 1 },\n { character: 'ù', originalCharacter: 'u', toneMark: 2 },\n { character: 'ũ', originalCharacter: 'u', toneMark: 3 },\n { character: 'ủ', originalCharacter: 'u', toneMark: 4 },\n { character: 'ú', originalCharacter: 'u', toneMark: 5 },\n { character: 'ụ', originalCharacter: 'u', toneMark: 6 },\n\n { character: 'ư', originalCharacter: 'ư', toneMark: 1 },\n { character: 'ừ', originalCharacter: 'ư', toneMark: 2 },\n { character: 'ữ', originalCharacter: 'ư', toneMark: 3 },\n { character: 'ử', originalCharacter: 'ư', toneMark: 4 },\n { character: 'ứ', originalCharacter: 'ư', toneMark: 5 },\n { character: 'ự', originalCharacter: 'ư', toneMark: 6 },\n\n { character: 'y', originalCharacter: 'y', toneMark: 1 },\n { character: 'ỳ', originalCharacter: 'y', toneMark: 2 },\n { character: 'ỹ', originalCharacter: 'y', toneMark: 3 },\n { character: 'ỷ', originalCharacter: 'y', toneMark: 4 },\n { character: 'ý', originalCharacter: 'y', toneMark: 5 },\n { character: 'ỵ', originalCharacter: 'y', toneMark: 6 },\n];\n\nconst transcriptToString = (transcript: PhoneticTranscript): string => {\n if (!transcript.main || !transcript.toneMark) {\n throw new Error('Invalid phonetic transcript');\n }\n\n return (\n (transcript.initial?.replaceAll('-', '') || '') +\n (transcript?.medial?.replaceAll('-', '') || '') +\n transcript.main.replaceAll('-', '') +\n (transcript.final?.replaceAll('-', '') || '') +\n transcript.toneMark.toString()\n );\n};\n\nconst buildPhoneticTranscript = (word: string): PhoneticTranscript => {\n word = word.toLowerCase();\n\n let transcript = {\n toneMark: 1,\n } as PhoneticTranscript;\n\n // NOTE: Check tone mark\n toneMarkList.forEach((toneMark) => {\n if (toneMark.toneMark !== 1 && word.includes(toneMark.character)) {\n transcript.toneMark = toneMark.toneMark;\n\n word = word.replace(toneMark.character, toneMark.originalCharacter);\n }\n });\n\n // NOTE: Check initial\n initialList.forEach((initial) => {\n if (\n word.startsWith(initial.character) &&\n word.length - initial.character.length > 0\n ) {\n transcript.initial = initial.phoneme;\n transcript.initialCharacter = initial.character;\n\n word = word.slice(initial.character.length);\n }\n });\n\n // NOTE: Check final\n finalList.forEach((final) => {\n if (\n word.endsWith(final.character) &&\n word.length - final.character.length > 0\n ) {\n transcript.final = final.phoneme;\n transcript.finalCharacter = final.character;\n\n word = word.slice(0, word.length - final.character.length);\n }\n });\n\n // NOTE: Check medial\n if (word.length > 1 && word !== 'oo') {\n if (\n word.startsWith('u') &&\n (transcript.initialCharacter === 'q' ||\n ['y', 'i', 'ê', 'ơ', 'â', 'iê', 'yê', 'ia', 'ya'].includes(\n word.slice(1),\n ))\n ) {\n transcript.medial = medialList[0]!.phoneme;\n transcript.medialCharacter = medialList[0]!.character;\n\n word = word.slice(1);\n } else if (word.startsWith('o')) {\n transcript.medial = medialList[1]!.phoneme;\n transcript.medialCharacter = medialList[1]!.character;\n\n word = word.slice(1);\n }\n }\n\n if (\n word === 'o' &&\n transcript.finalCharacter &&\n ['nh', 'ng', 'ch', 'c'].includes(transcript.finalCharacter)\n ) {\n const main = mainList.filter((main) => main.phoneme === '-ɔ-');\n\n transcript.main = main[0]!.phoneme;\n transcript.mainCharacter = main[0]!.character;\n\n word = word.slice(1);\n } else {\n // NOTE: Check main\n mainList.forEach((main) => {\n if (word === main.character) {\n transcript.main = main.phoneme;\n transcript.mainCharacter = main.character;\n\n word = word.slice(main.character.length);\n }\n });\n }\n\n return transcript;\n};\n\nexport const phoneticTranscriptWord = (word: string) => {\n return word.replaceAll(/[^\\P{L}]+/gmu, (word) => {\n try {\n return transcriptToString(buildPhoneticTranscript(word));\n } catch (e) {\n return word;\n }\n });\n};\n\nexport const phoneticTranscriptSentence = (sentence: string): string => {\n return sentence\n .split(' ')\n .map((word) => phoneticTranscriptWord(word))\n .join(' ');\n};\n"],"mappings":"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","names":["main","word"]}
|