Files
ai_english/client/lib/features/speaking/data/pronunciation_data.dart
2025-11-17 14:09:17 +08:00

304 lines
9.0 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}