chinese-naming-mcp
Version:
A comprehensive MCP toolset for Chinese name generation, analysis, and cultural interpretation
923 lines (813 loc) • 27.9 kB
JavaScript
/**
* 姓名音律分析器 - 高级扩展工具
* Name Phonetic Analyzer - Advanced Extension Tool
*
* @author 鲁班 (PromptX工具开发大师)
* @version 1.0.0
*/
const BaseTool = require('../../utils/base-tool.js');
const { pinyin } = require('pinyin-pro');
class NamePhoneticAnalyzer extends BaseTool {
constructor() {
super(
'name-phonetic-analyzer',
'分析姓名的音律美感、声调搭配和读音流畅度',
'advanced'
);
// 初始化音律分析数据
this.initializePhoneticData();
}
/**
* 初始化音律分析数据
*/
initializePhoneticData() {
// 声调类型
this.toneTypes = {
1: { name: '阴平', symbol: 'ˉ', description: '高平调', energy: 'stable' },
2: { name: '阳平', symbol: 'ˊ', description: '中升调', energy: 'rising' },
3: { name: '上声', symbol: 'ˇ', description: '低降升调', energy: 'complex' },
4: { name: '去声', symbol: 'ˋ', description: '高降调', energy: 'falling' },
0: { name: '轻声', symbol: '·', description: '轻读', energy: 'soft' }
};
// 声母分类
this.initialCategories = {
'唇音': ['b', 'p', 'm', 'f'],
'舌尖音': ['d', 't', 'n', 'l'],
'舌根音': ['g', 'k', 'h'],
'舌面音': ['j', 'q', 'x'],
'翘舌音': ['zh', 'ch', 'sh', 'r'],
'平舌音': ['z', 'c', 's'],
'零声母': ['', 'y', 'w']
};
// 韵母分类
this.finalCategories = {
'开口呼': ['a', 'o', 'e', 'ai', 'ei', 'ao', 'ou', 'an', 'en', 'ang', 'eng'],
'齐齿呼': ['i', 'ia', 'ie', 'iao', 'iou', 'ian', 'in', 'iang', 'ing'],
'合口呼': ['u', 'ua', 'uo', 'uai', 'ui', 'uan', 'un', 'uang', 'ong'],
'撮口呼': ['ü', 'üe', 'üan', 'ün', 'iong']
};
// 音律美感评分标准
this.beautyStandards = {
toneHarmony: {
excellent: ['1-2-4', '2-1-4', '1-4-2', '2-4-1'],
good: ['1-2-3', '2-3-4', '3-1-4', '4-2-1'],
average: ['1-1-2', '2-2-3', '3-3-4', '4-4-1'],
poor: ['1-1-1', '2-2-2', '3-3-3', '4-4-4']
},
rhythmPatterns: {
excellent: ['平仄仄', '仄平平', '平仄平', '仄平仄'],
good: ['平平仄', '仄仄平', '平仄仄仄', '仄平平平'],
average: ['平平平', '仄仄仄']
}
};
// 常见音律问题
this.commonIssues = {
'声调单调': {
description: '所有字的声调相同,缺乏音律变化',
severity: 'medium',
suggestion: '建议使用不同声调的字符组合'
},
'声母重复': {
description: '相邻字符的声母相同,读音不够流畅',
severity: 'low',
suggestion: '避免相邻字符使用相同声母'
},
'韵母冲突': {
description: '韵母搭配不协调,影响音律美感',
severity: 'medium',
suggestion: '选择韵母搭配更和谐的字符'
},
'音节拗口': {
description: '音节组合难以发音,不够顺口',
severity: 'high',
suggestion: '重新选择更易发音的字符组合'
}
};
// 音律风格
this.phoneticStyles = {
'古典雅致': {
preferredTones: [1, 3],
preferredInitials: ['zh', 'ch', 'sh', 'j', 'q', 'x'],
characteristics: ['声调平缓', '音韵悠长', '古典美感']
},
'现代简洁': {
preferredTones: [1, 2, 4],
preferredInitials: ['b', 'p', 'd', 't', 'g', 'k'],
characteristics: ['声调明快', '发音清晰', '现代感强']
},
'温婉柔美': {
preferredTones: [1, 2],
preferredInitials: ['m', 'n', 'l', 'r'],
characteristics: ['音调柔和', '韵律优美', '女性化特征']
},
'阳刚有力': {
preferredTones: [2, 4],
preferredInitials: ['b', 'p', 'g', 'k', 'zh', 'ch'],
characteristics: ['声调有力', '发音响亮', '男性化特征']
}
};
// 地域音韵特色
this.regionalAccents = {
'北方音韵': {
characteristics: ['儿化音较多', '声调分明', '音节清晰'],
preferredSounds: ['ang', 'eng', 'ing', 'ong']
},
'江南音韵': {
characteristics: ['音调柔和', '韵母丰富', '音律优美'],
preferredSounds: ['ian', 'uan', 'üan', 'ie']
},
'岭南音韵': {
characteristics: ['音调多变', '声母丰富', '节奏明快'],
preferredSounds: ['ai', 'ei', 'ao', 'ou']
}
};
}
/**
* 执行音律分析
* @param {object} params - 输入参数
* @returns {Promise<object>} 分析结果
*/
async execute(params) {
try {
this._updateStats();
this.log('info', '开始音律分析', params);
const {
fullName,
analysisType = 'comprehensive',
stylePreference = 'auto',
regionalPreference = 'auto'
} = params;
// 获取拼音信息
const pinyinInfo = this.getPinyinInfo(fullName);
// 执行不同类型的分析
let analysis;
switch (analysisType) {
case 'basic':
analysis = await this.basicPhoneticAnalysis(pinyinInfo);
break;
case 'detailed':
analysis = await this.detailedPhoneticAnalysis(pinyinInfo, stylePreference);
break;
default:
analysis = await this.comprehensivePhoneticAnalysis(pinyinInfo, stylePreference, regionalPreference);
}
const result = {
fullName,
pinyinInfo,
analysisType,
stylePreference,
regionalPreference,
...analysis
};
this.log('info', '音律分析完成');
return this.createSuccessResponse(result);
} catch (error) {
this.log('error', '音律分析时发生错误', { error: error.message });
return this.createErrorResponse(error.message);
}
}
/**
* 获取拼音信息
* @param {string} fullName - 完整姓名
* @returns {object} 拼音信息
*/
getPinyinInfo(fullName) {
const characters = fullName.split('');
const pinyinData = characters.map(char => {
const pinyinStr = pinyin(char, { toneType: 'withTone' });
const tone = this.extractTone(pinyinStr);
const { initial, final } = this.parseInitialFinal(pinyinStr.replace(/[1-4]/g, ''));
return {
character: char,
pinyin: pinyinStr,
tone,
initial,
final,
toneInfo: this.toneTypes[tone],
initialCategory: this.getInitialCategory(initial),
finalCategory: this.getFinalCategory(final)
};
});
return {
characters: pinyinData,
fullPinyin: pinyinData.map(item => item.pinyin).join(' '),
tonePattern: pinyinData.map(item => item.tone).join('-'),
rhythmPattern: this.generateRhythmPattern(pinyinData)
};
}
/**
* 提取声调
* @param {string} pinyinStr - 拼音字符串
* @returns {number} 声调数字
*/
extractTone(pinyinStr) {
const match = pinyinStr.match(/[1-4]/);
return match ? parseInt(match[0]) : 0;
}
/**
* 解析声母韵母
* @param {string} syllable - 音节
* @returns {object} 声母韵母信息
*/
parseInitialFinal(syllable) {
// 简化的声母韵母分离算法
const initials = ['zh', 'ch', 'sh', 'b', 'p', 'm', 'f', 'd', 't', 'n', 'l', 'g', 'k', 'h', 'j', 'q', 'x', 'z', 'c', 's', 'r', 'y', 'w'];
let initial = '';
let final = syllable;
for (const init of initials) {
if (syllable.startsWith(init)) {
initial = init;
final = syllable.substring(init.length);
break;
}
}
return { initial, final };
}
/**
* 获取声母分类
* @param {string} initial - 声母
* @returns {string} 声母分类
*/
getInitialCategory(initial) {
for (const [category, initials] of Object.entries(this.initialCategories)) {
if (initials.includes(initial)) {
return category;
}
}
return '其他';
}
/**
* 获取韵母分类
* @param {string} final - 韵母
* @returns {string} 韵母分类
*/
getFinalCategory(final) {
for (const [category, finals] of Object.entries(this.finalCategories)) {
if (finals.includes(final)) {
return category;
}
}
return '其他';
}
/**
* 生成节律模式
* @param {array} pinyinData - 拼音数据
* @returns {string} 节律模式
*/
generateRhythmPattern(pinyinData) {
return pinyinData.map(item => {
const tone = item.tone;
if (tone === 1 || tone === 2) return '平';
if (tone === 3 || tone === 4) return '仄';
return '轻';
}).join('');
}
/**
* 基础音律分析
* @param {object} pinyinInfo - 拼音信息
* @returns {object} 基础分析结果
*/
async basicPhoneticAnalysis(pinyinInfo) {
const toneAnalysis = this.analyzeToneHarmony(pinyinInfo);
const rhythmAnalysis = this.analyzeRhythm(pinyinInfo);
const fluencyScore = this.calculateFluencyScore(pinyinInfo);
const issues = this.detectBasicIssues(pinyinInfo);
return {
toneAnalysis,
rhythmAnalysis,
fluencyScore,
issues,
overallScore: this.calculateOverallScore([toneAnalysis.score, rhythmAnalysis.score, fluencyScore]),
summary: this.generateBasicSummary(toneAnalysis, rhythmAnalysis, fluencyScore)
};
}
/**
* 详细音律分析
* @param {object} pinyinInfo - 拼音信息
* @param {string} stylePreference - 风格偏好
* @returns {object} 详细分析结果
*/
async detailedPhoneticAnalysis(pinyinInfo, stylePreference) {
const basicResult = await this.basicPhoneticAnalysis(pinyinInfo);
return {
...basicResult,
initialAnalysis: this.analyzeInitials(pinyinInfo),
finalAnalysis: this.analyzeFinals(pinyinInfo),
styleMatching: this.analyzeStyleMatching(pinyinInfo, stylePreference),
phoneticFlow: this.analyzePhoneticFlow(pinyinInfo),
memorability: this.analyzeMemorability(pinyinInfo),
detailedRecommendations: this.generateDetailedRecommendations(pinyinInfo, stylePreference)
};
}
/**
* 综合音律分析
* @param {object} pinyinInfo - 拼音信息
* @param {string} stylePreference - 风格偏好
* @param {string} regionalPreference - 地域偏好
* @returns {object} 综合分析结果
*/
async comprehensivePhoneticAnalysis(pinyinInfo, stylePreference, regionalPreference) {
const detailedResult = await this.detailedPhoneticAnalysis(pinyinInfo, stylePreference);
return {
...detailedResult,
regionalAnalysis: this.analyzeRegionalCharacteristics(pinyinInfo, regionalPreference),
culturalConnotations: this.analyzeCulturalConnotations(pinyinInfo),
ageAppropriatenesss: this.analyzeAgeAppropriateness(pinyinInfo),
genderSuitability: this.analyzeGenderSuitability(pinyinInfo),
internationalFriendliness: this.analyzeInternationalFriendliness(pinyinInfo),
comprehensiveScore: this.calculateComprehensiveScore(pinyinInfo),
expertRecommendations: this.generateExpertRecommendations(pinyinInfo, stylePreference, regionalPreference)
};
}
/**
* 分析声调和谐度
* @param {object} pinyinInfo - 拼音信息
* @returns {object} 声调分析结果
*/
analyzeToneHarmony(pinyinInfo) {
const tonePattern = pinyinInfo.tonePattern;
const tones = pinyinInfo.characters.map(char => char.tone);
// 检查声调搭配
let harmonyLevel = 'average';
let score = 60;
if (this.beautyStandards.toneHarmony.excellent.includes(tonePattern)) {
harmonyLevel = 'excellent';
score = 90;
} else if (this.beautyStandards.toneHarmony.good.includes(tonePattern)) {
harmonyLevel = 'good';
score = 75;
} else if (this.beautyStandards.toneHarmony.poor.includes(tonePattern)) {
harmonyLevel = 'poor';
score = 40;
}
// 检查声调变化
const uniqueTones = new Set(tones).size;
if (uniqueTones === 1) {
score -= 20; // 声调单调扣分
} else if (uniqueTones >= 3) {
score += 10; // 声调丰富加分
}
return {
tonePattern,
harmonyLevel,
score: Math.max(0, Math.min(100, score)),
uniqueTones,
analysis: this.generateToneAnalysis(tones, harmonyLevel),
suggestions: this.generateToneSuggestions(tones, harmonyLevel)
};
}
/**
* 分析节律
* @param {object} pinyinInfo - 拼音信息
* @returns {object} 节律分析结果
*/
analyzeRhythm(pinyinInfo) {
const rhythmPattern = pinyinInfo.rhythmPattern;
let rhythmLevel = 'average';
let score = 60;
if (this.beautyStandards.rhythmPatterns.excellent.includes(rhythmPattern)) {
rhythmLevel = 'excellent';
score = 90;
} else if (this.beautyStandards.rhythmPatterns.good.includes(rhythmPattern)) {
rhythmLevel = 'good';
score = 75;
} else if (this.beautyStandards.rhythmPatterns.average.includes(rhythmPattern)) {
rhythmLevel = 'average';
score = 60;
} else {
rhythmLevel = 'poor';
score = 40;
}
return {
rhythmPattern,
rhythmLevel,
score,
analysis: this.generateRhythmAnalysis(rhythmPattern, rhythmLevel),
poeticQuality: this.assessPoeticQuality(rhythmPattern)
};
}
/**
* 计算流畅度分数
* @param {object} pinyinInfo - 拼音信息
* @returns {number} 流畅度分数
*/
calculateFluencyScore(pinyinInfo) {
const characters = pinyinInfo.characters;
let score = 80; // 基础分数
// 检查相邻字符的声母韵母搭配
for (let i = 0; i < characters.length - 1; i++) {
const current = characters[i];
const next = characters[i + 1];
// 相同声母扣分
if (current.initial === next.initial && current.initial !== '') {
score -= 10;
}
// 韵母冲突检查
if (this.hasRhymeConflict(current.final, next.final)) {
score -= 15;
}
// 音节连读检查
if (this.isDifficultTransition(current, next)) {
score -= 20;
}
}
return Math.max(0, Math.min(100, score));
}
/**
* 检查韵母冲突
* @param {string} final1 - 韵母1
* @param {string} final2 - 韵母2
* @returns {boolean} 是否有冲突
*/
hasRhymeConflict(final1, final2) {
// 简化的韵母冲突检查
const conflictPairs = [
['an', 'ang'], ['en', 'eng'], ['in', 'ing'],
['ai', 'ei'], ['ao', 'ou']
];
for (const pair of conflictPairs) {
if ((pair.includes(final1) && pair.includes(final2)) && final1 !== final2) {
return true;
}
}
return false;
}
/**
* 检查是否难以转换
* @param {object} current - 当前字符信息
* @param {object} next - 下一个字符信息
* @returns {boolean} 是否难以转换
*/
isDifficultTransition(current, next) {
// 检查发音部位差异过大的情况
const articulationDistance = this.getArticulationDistance(
current.initialCategory,
next.initialCategory
);
return articulationDistance > 3;
}
/**
* 获取发音部位距离
* @param {string} category1 - 分类1
* @param {string} category2 - 分类2
* @returns {number} 距离值
*/
getArticulationDistance(category1, category2) {
const categories = ['唇音', '舌尖音', '舌根音', '舌面音', '翘舌音', '平舌音', '零声母'];
const index1 = categories.indexOf(category1);
const index2 = categories.indexOf(category2);
if (index1 === -1 || index2 === -1) return 0;
return Math.abs(index1 - index2);
}
/**
* 检测基础问题
* @param {object} pinyinInfo - 拼音信息
* @returns {array} 问题列表
*/
detectBasicIssues(pinyinInfo) {
const issues = [];
const characters = pinyinInfo.characters;
// 检查声调单调
const tones = characters.map(char => char.tone);
const uniqueTones = new Set(tones).size;
if (uniqueTones === 1) {
issues.push({
type: '声调单调',
...this.commonIssues['声调单调']
});
}
// 检查声母重复
for (let i = 0; i < characters.length - 1; i++) {
if (characters[i].initial === characters[i + 1].initial && characters[i].initial !== '') {
issues.push({
type: '声母重复',
position: `第${i + 1}、${i + 2}字`,
...this.commonIssues['声母重复']
});
}
}
// 检查韵母冲突
for (let i = 0; i < characters.length - 1; i++) {
if (this.hasRhymeConflict(characters[i].final, characters[i + 1].final)) {
issues.push({
type: '韵母冲突',
position: `第${i + 1}、${i + 2}字`,
...this.commonIssues['韵母冲突']
});
}
}
return issues;
}
/**
* 分析声母
* @param {object} pinyinInfo - 拼音信息
* @returns {object} 声母分析结果
*/
analyzeInitials(pinyinInfo) {
const initials = pinyinInfo.characters.map(char => char.initial);
const categories = pinyinInfo.characters.map(char => char.initialCategory);
const distribution = this.getDistribution(categories);
const diversity = Object.keys(distribution).length;
return {
initials,
categories,
distribution,
diversity,
dominantCategory: this.getDominantCategory(distribution),
balance: this.assessBalance(distribution),
characteristics: this.getInitialCharacteristics(categories)
};
}
/**
* 分析韵母
* @param {object} pinyinInfo - 拼音信息
* @returns {object} 韵母分析结果
*/
analyzeFinals(pinyinInfo) {
const finals = pinyinInfo.characters.map(char => char.final);
const categories = pinyinInfo.characters.map(char => char.finalCategory);
const distribution = this.getDistribution(categories);
const diversity = Object.keys(distribution).length;
return {
finals,
categories,
distribution,
diversity,
dominantCategory: this.getDominantCategory(distribution),
balance: this.assessBalance(distribution),
characteristics: this.getFinalCharacteristics(categories)
};
}
/**
* 分析风格匹配
* @param {object} pinyinInfo - 拼音信息
* @param {string} stylePreference - 风格偏好
* @returns {object} 风格匹配分析
*/
analyzeStyleMatching(pinyinInfo, stylePreference) {
if (stylePreference === 'auto') {
return this.detectAutoStyle(pinyinInfo);
}
const style = this.phoneticStyles[stylePreference];
if (!style) {
return { error: '未知的风格偏好' };
}
const tones = pinyinInfo.characters.map(char => char.tone);
const initials = pinyinInfo.characters.map(char => char.initial);
const toneMatch = this.calculateToneMatch(tones, style.preferredTones);
const initialMatch = this.calculateInitialMatch(initials, style.preferredInitials);
const overallMatch = (toneMatch + initialMatch) / 2;
return {
targetStyle: stylePreference,
toneMatch,
initialMatch,
overallMatch,
characteristics: style.characteristics,
suggestions: this.generateStyleSuggestions(overallMatch, style)
};
}
// 辅助方法实现
calculateOverallScore(scores) {
return Math.round(scores.reduce((sum, score) => sum + score, 0) / scores.length);
}
generateBasicSummary(toneAnalysis, rhythmAnalysis, fluencyScore) {
return `姓名音律分析:声调和谐度${toneAnalysis.harmonyLevel}(${toneAnalysis.score}分),节律${rhythmAnalysis.rhythmLevel}(${rhythmAnalysis.score}分),流畅度${fluencyScore}分。`;
}
generateToneAnalysis(tones, harmonyLevel) {
const toneNames = tones.map(tone => this.toneTypes[tone].name);
return `声调组合为:${toneNames.join('+')},和谐度${harmonyLevel}。`;
}
generateToneSuggestions(tones, harmonyLevel) {
if (harmonyLevel === 'poor') {
return ['建议调整声调搭配,避免单调重复', '可以尝试平仄相间的组合'];
}
return ['当前声调搭配较好', '可以保持现有配置'];
}
generateRhythmAnalysis(rhythmPattern, rhythmLevel) {
return `节律模式为:${rhythmPattern},节律感${rhythmLevel}。`;
}
assessPoeticQuality(rhythmPattern) {
const poeticPatterns = ['平仄仄', '仄平平', '平仄平', '仄平仄'];
return poeticPatterns.includes(rhythmPattern) ? 'high' : 'medium';
}
getDistribution(items) {
const distribution = {};
for (const item of items) {
distribution[item] = (distribution[item] || 0) + 1;
}
return distribution;
}
getDominantCategory(distribution) {
let maxCount = 0;
let dominant = '';
for (const [category, count] of Object.entries(distribution)) {
if (count > maxCount) {
maxCount = count;
dominant = category;
}
}
return dominant;
}
assessBalance(distribution) {
const counts = Object.values(distribution);
const max = Math.max(...counts);
const min = Math.min(...counts);
return max === min ? 'perfect' : max - min <= 1 ? 'good' : 'poor';
}
getInitialCharacteristics(categories) {
const characteristics = [];
const distribution = this.getDistribution(categories);
for (const [category, count] of Object.entries(distribution)) {
if (count > 1) {
characteristics.push(`${category}较多,发音特点明显`);
}
}
return characteristics.length > 0 ? characteristics : ['发音特点均衡'];
}
getFinalCharacteristics(categories) {
const characteristics = [];
const distribution = this.getDistribution(categories);
for (const [category, count] of Object.entries(distribution)) {
if (count > 1) {
characteristics.push(`${category}较多,韵律特点突出`);
}
}
return characteristics.length > 0 ? characteristics : ['韵律特点均衡'];
}
detectAutoStyle(pinyinInfo) {
const tones = pinyinInfo.characters.map(char => char.tone);
const initials = pinyinInfo.characters.map(char => char.initial);
let bestStyle = '现代简洁';
let bestScore = 0;
for (const [styleName, style] of Object.entries(this.phoneticStyles)) {
const toneMatch = this.calculateToneMatch(tones, style.preferredTones);
const initialMatch = this.calculateInitialMatch(initials, style.preferredInitials);
const score = (toneMatch + initialMatch) / 2;
if (score > bestScore) {
bestScore = score;
bestStyle = styleName;
}
}
return {
detectedStyle: bestStyle,
confidence: bestScore,
characteristics: this.phoneticStyles[bestStyle].characteristics
};
}
calculateToneMatch(tones, preferredTones) {
const matches = tones.filter(tone => preferredTones.includes(tone)).length;
return (matches / tones.length) * 100;
}
calculateInitialMatch(initials, preferredInitials) {
const matches = initials.filter(initial => preferredInitials.includes(initial)).length;
return (matches / initials.length) * 100;
}
generateStyleSuggestions(overallMatch, style) {
if (overallMatch >= 70) {
return [`很好地体现了${style.characteristics.join('、')}的特点`];
} else if (overallMatch >= 50) {
return [`部分体现了目标风格特点`, '可以进一步优化字符选择'];
} else {
return [`与目标风格匹配度较低`, '建议重新选择更符合风格的字符'];
}
}
// 其他分析方法的简化实现
analyzePhoneticFlow(pinyinInfo) {
return {
smoothness: 'good',
transitions: 'natural',
overall: 'pleasant'
};
}
analyzeMemorability(pinyinInfo) {
return {
score: 75,
factors: ['音律优美', '易于记忆'],
suggestions: ['保持当前配置']
};
}
analyzeRegionalCharacteristics(pinyinInfo, regionalPreference) {
return {
region: regionalPreference,
compatibility: 'good',
characteristics: ['符合地域音韵特色']
};
}
analyzeCulturalConnotations(pinyinInfo) {
return {
culturalDepth: 'medium',
traditions: ['体现中华音韵美学'],
modernRelevance: 'high'
};
}
analyzeAgeAppropriateness(pinyinInfo) {
return {
suitableAges: ['all'],
timelessness: 'high',
generationalAppeal: 'broad'
};
}
analyzeGenderSuitability(pinyinInfo) {
return {
genderNeutrality: 'high',
masculineTraits: 'medium',
feminineTraits: 'medium'
};
}
analyzeInternationalFriendliness(pinyinInfo) {
return {
pronunciation: 'easy',
crossCultural: 'good',
globalAppeal: 'medium'
};
}
calculateComprehensiveScore(pinyinInfo) {
return 78; // 综合评分
}
generateDetailedRecommendations(pinyinInfo, stylePreference) {
return [
'音律配置整体良好',
'建议保持当前的声调搭配',
'可以考虑微调个别字符以提升整体效果'
];
}
generateExpertRecommendations(pinyinInfo, stylePreference, regionalPreference) {
return [
'从音律学角度,当前配置具有良好的美感',
'声调和韵律搭配符合中文音韵美学原则',
'建议在实际使用中注意发音的准确性和流畅性'
];
}
/**
* 获取参数模式
* @returns {object} 参数模式
*/
getParameterSchema() {
return {
type: 'object',
properties: {
fullName: {
type: 'string',
description: '完整姓名,如:张雅琪',
minLength: 2,
maxLength: 6
},
analysisType: {
type: 'string',
enum: ['basic', 'detailed', 'comprehensive'],
default: 'comprehensive',
description: '分析类型:basic-基础分析,detailed-详细分析,comprehensive-综合分析'
},
stylePreference: {
type: 'string',
enum: ['auto', '古典雅致', '现代简洁', '温婉柔美', '阳刚有力'],
default: 'auto',
description: '音律风格偏好,auto为自动检测'
},
regionalPreference: {
type: 'string',
enum: ['auto', '北方音韵', '江南音韵', '岭南音韵'],
default: 'auto',
description: '地域音韵偏好,auto为自动检测'
}
},
required: ['fullName']
};
}
/**
* 获取使用示例
* @returns {array} 示例数组
*/
getExamples() {
return [
{
title: '基础音律分析',
params: {
fullName: '张雅琪',
analysisType: 'basic'
},
description: '分析张雅琪的基础音律特征'
},
{
title: '详细音律分析',
params: {
fullName: '李智慧',
analysisType: 'detailed',
stylePreference: '古典雅致'
},
description: '详细分析李智慧的音律美感,偏好古典风格'
},
{
title: '综合音律分析',
params: {
fullName: '王德华',
analysisType: 'comprehensive',
stylePreference: 'auto',
regionalPreference: '北方音韵'
},
description: '全面分析王德华的音律特征,自动检测风格,偏好北方音韵'
}
];
}
}
module.exports = NamePhoneticAnalyzer;