Files
ai_english/client/lib/features/speaking/data/pronunciation_data.dart

304 lines
9.0 KiB
Dart
Raw Normal View History

2025-11-17 14:09:17 +08:00
import '../models/pronunciation_item.dart';
/// 发音练习静态数据
class PronunciationData {
static final List<PronunciationItem> _wordPronunciation = [
PronunciationItem(
id: 'word_001',
text: 'pronunciation',
phonetic: '/prəˌnʌnsiˈeɪʃn/',
audioUrl: 'assets/audio/pronunciation.mp3',
type: PronunciationType.word,
difficulty: DifficultyLevel.intermediate,
category: '学习词汇',
tips: [
'注意重音在第四个音节',
'末尾的-tion读作/ʃn/',
'中间的nun要清晰发音'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'word_002',
text: 'communication',
phonetic: '/kəˌmjuːnɪˈkeɪʃn/',
audioUrl: 'assets/audio/communication.mp3',
type: PronunciationType.word,
difficulty: DifficultyLevel.intermediate,
category: '商务词汇',
tips: [
'重音在第五个音节',
'注意/mju:/的发音',
'末尾-tion读作/ʃn/'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'word_003',
text: 'restaurant',
phonetic: '/ˈrestərɑːnt/',
audioUrl: 'assets/audio/restaurant.mp3',
type: PronunciationType.word,
difficulty: DifficultyLevel.beginner,
category: '日常词汇',
tips: [
'重音在第一个音节',
'注意/r/音的发音',
'末尾的t通常不发音'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'word_004',
text: 'schedule',
phonetic: '/ˈʃedjuːl/',
audioUrl: 'assets/audio/schedule.mp3',
type: PronunciationType.word,
difficulty: DifficultyLevel.intermediate,
category: '工作词汇',
tips: [
'英式发音以/ʃ/开头',
'美式发音以/sk/开头',
'重音在第一个音节'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'word_005',
text: 'comfortable',
phonetic: '/ˈkʌmftəbl/',
audioUrl: 'assets/audio/comfortable.mp3',
type: PronunciationType.word,
difficulty: DifficultyLevel.advanced,
category: '形容词',
tips: [
'注意弱读音节',
'中间的or通常省略',
'末尾的-able读作/əbl/'
],
createdAt: DateTime.now(),
),
];
static final List<PronunciationItem> _sentencePronunciation = [
PronunciationItem(
id: 'sentence_001',
text: 'How are you doing today?',
phonetic: '/haʊ ɑːr juː ˈduːɪŋ təˈdeɪ/',
audioUrl: 'assets/audio/how_are_you.mp3',
type: PronunciationType.sentence,
difficulty: DifficultyLevel.beginner,
category: '日常问候',
tips: [
'注意连读How are → /haʊər/',
'语调上扬表示疑问',
'today重音在第二个音节'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'sentence_002',
text: 'Could you please help me with this?',
phonetic: '/kʊd juː pliːz help miː wɪð ðɪs/',
audioUrl: 'assets/audio/could_you_help.mp3',
type: PronunciationType.sentence,
difficulty: DifficultyLevel.intermediate,
category: '请求帮助',
tips: [
'礼貌的语调,温和下降',
'注意could的弱读',
'with this连读'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'sentence_003',
text: 'I would like to make a reservation.',
phonetic: '/aɪ wʊd laɪk tuː meɪk ə ˌrezərˈveɪʃn/',
audioUrl: 'assets/audio/reservation.mp3',
type: PronunciationType.sentence,
difficulty: DifficultyLevel.intermediate,
category: '预订服务',
tips: [
'正式语调,清晰发音',
'would like连读',
'reservation重音在第三个音节'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'sentence_004',
text: 'The weather is absolutely beautiful today.',
phonetic: '/ðə ˈweðər ɪz ˌæbsəˈluːtli ˈbjuːtɪfl təˈdeɪ/',
audioUrl: 'assets/audio/weather_beautiful.mp3',
type: PronunciationType.sentence,
difficulty: DifficultyLevel.advanced,
category: '天气描述',
tips: [
'注意节奏和重音分布',
'absolutely的重音模式',
'形容词的语调变化'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'sentence_005',
text: 'I am looking forward to hearing from you.',
phonetic: '/aɪ æm ˈlʊkɪŋ ˈːrwərd tuː ˈhɪrɪŋ frəm juː/',
audioUrl: 'assets/audio/looking_forward.mp3',
type: PronunciationType.sentence,
difficulty: DifficultyLevel.advanced,
category: '商务表达',
tips: [
'正式商务语调',
'注意短语的完整性',
'forward to连读'
],
createdAt: DateTime.now(),
),
];
static final List<PronunciationItem> _phrasePronunciation = [
PronunciationItem(
id: 'phrase_001',
text: 'Nice to meet you',
phonetic: '/naɪs tuː miːt juː/',
audioUrl: 'assets/audio/nice_to_meet.mp3',
type: PronunciationType.phrase,
difficulty: DifficultyLevel.beginner,
category: '问候语',
tips: [
'连读Nice to → /naɪstə/',
'友好的语调',
'重音在Nice和meet上'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'phrase_002',
text: 'Thank you very much',
phonetic: '/θæŋk juː ˈveri mʌtʃ/',
audioUrl: 'assets/audio/thank_you_much.mp3',
type: PronunciationType.phrase,
difficulty: DifficultyLevel.beginner,
category: '感谢语',
tips: [
'注意th音的发音',
'very much重音分布',
'真诚的语调'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'phrase_003',
text: 'Excuse me',
phonetic: '/ɪkˈskjuːz miː/',
audioUrl: 'assets/audio/excuse_me.mp3',
type: PronunciationType.phrase,
difficulty: DifficultyLevel.beginner,
category: '礼貌用语',
tips: [
'重音在excuse的第二个音节',
'礼貌的上升语调',
'清晰的/z/音'
],
createdAt: DateTime.now(),
),
];
static final List<PronunciationItem> _phonemePronunciation = [
PronunciationItem(
id: 'phoneme_001',
text: '/θ/ - think, three, thank',
phonetic: '/θ/',
audioUrl: 'assets/audio/th_sound.mp3',
type: PronunciationType.phoneme,
difficulty: DifficultyLevel.intermediate,
category: '辅音',
tips: [
'舌尖轻触上齿',
'气流从舌齿间通过',
'不要发成/s/或/f/'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'phoneme_002',
text: '/r/ - red, right, very',
phonetic: '/r/',
audioUrl: 'assets/audio/r_sound.mp3',
type: PronunciationType.phoneme,
difficulty: DifficultyLevel.advanced,
category: '辅音',
tips: [
'舌尖向上卷起',
'不要触碰口腔任何部位',
'声带振动'
],
createdAt: DateTime.now(),
),
PronunciationItem(
id: 'phoneme_003',
text: '/æ/ - cat, hat, bad',
phonetic: '/æ/',
audioUrl: 'assets/audio/ae_sound.mp3',
type: PronunciationType.phoneme,
difficulty: DifficultyLevel.intermediate,
category: '元音',
tips: [
'嘴巴张得比/e/大',
'舌位较低',
'短元音,发音清脆'
],
createdAt: DateTime.now(),
),
];
/// 获取所有发音练习项目
static List<PronunciationItem> getAllItems() {
return [
..._wordPronunciation,
..._sentencePronunciation,
..._phrasePronunciation,
..._phonemePronunciation,
];
}
/// 根据类型获取发音练习项目
static List<PronunciationItem> getItemsByType(PronunciationType type) {
switch (type) {
case PronunciationType.word:
return _wordPronunciation;
case PronunciationType.sentence:
return _sentencePronunciation;
case PronunciationType.phrase:
return _phrasePronunciation;
case PronunciationType.phoneme:
return _phonemePronunciation;
}
}
/// 根据难度获取发音练习项目
static List<PronunciationItem> getItemsByDifficulty(DifficultyLevel difficulty) {
return getAllItems().where((item) => item.difficulty == difficulty).toList();
}
/// 根据分类获取发音练习项目
static List<PronunciationItem> getItemsByCategory(String category) {
return getAllItems().where((item) => item.category == category).toList();
}
/// 根据ID获取发音练习项目
static PronunciationItem? getItemById(String id) {
try {
return getAllItems().firstWhere((item) => item.id == id);
} catch (e) {
return null;
}
}
/// 获取所有分类
static List<String> getAllCategories() {
return getAllItems().map((item) => item.category).toSet().toList();
}
}