diff --git a/android/app/build.gradle b/android/app/build.gradle index 019f52266..414611194 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -141,12 +141,12 @@ android { dimension "environment" applicationId "me.tinykitten.trainlcd.dev" versionNameSuffix "-dev" - versionCode 100000325 + versionCode 100000326 versionName "10.2.1" } prod { dimension "environment" - versionCode 100000325 + versionCode 100000326 versionName "10.2.1" } } diff --git a/app.config.ts b/app.config.ts index 523dc2da6..9dfed48f2 100644 --- a/app.config.ts +++ b/app.config.ts @@ -53,7 +53,7 @@ export default ({ config }: ConfigContext) => ({ }, }, ios: { - buildNumber: '2538', + buildNumber: '2539', bundleIdentifier: process.env.EAS_BUILD_PROFILE === 'production' ? 'me.tinykitten.trainlcd' @@ -70,7 +70,7 @@ export default ({ config }: ConfigContext) => ({ ? 'me.tinykitten.trainlcd' : 'me.tinykitten.trainlcd.dev', permissions: [], - versionCode: 100000325, + versionCode: 100000326, }, owner: 'trainlcd', }); @@ -101,5 +101,6 @@ export default ({ config }: ConfigContext) => ({ + diff --git a/ios/TrainLCD.xcodeproj/project.pbxproj b/ios/TrainLCD.xcodeproj/project.pbxproj index 91182b481..88e2cfffb 100644 --- a/ios/TrainLCD.xcodeproj/project.pbxproj +++ b/ios/TrainLCD.xcodeproj/project.pbxproj @@ -2419,7 +2419,7 @@ CODE_SIGN_ENTITLEMENTS = ProdTrainLCD.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = E6R2G33Z36; INFOPLIST_FILE = TrainLCD/Schemes/Prod/Info.plist; @@ -2458,7 +2458,7 @@ CODE_SIGN_ENTITLEMENTS = ProdTrainLCD.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEVELOPMENT_TEAM = E6R2G33Z36; INFOPLIST_FILE = TrainLCD/Schemes/Prod/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = TrainLCD; @@ -2517,7 +2517,7 @@ CODE_SIGN_ENTITLEMENTS = TrainLCD/trainlcd.entitlements; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; CXX = "$(REACT_NATIVE_PATH)/scripts/xcode/ccache-clang++.sh"; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -2623,7 +2623,7 @@ CODE_SIGN_ENTITLEMENTS = TrainLCD/trainlcd.entitlements; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; CXX = "$(REACT_NATIVE_PATH)/scripts/xcode/ccache-clang++.sh"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -2702,7 +2702,7 @@ CODE_SIGN_ENTITLEMENTS = CanaryTrainLCD.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = E6R2G33Z36; INFOPLIST_FILE = TrainLCD/Schemes/Dev/Info.plist; @@ -2741,7 +2741,7 @@ CODE_SIGN_ENTITLEMENTS = CanaryTrainLCD.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; INFOPLIST_FILE = TrainLCD/Schemes/Dev/Info.plist; @@ -2952,7 +2952,7 @@ CODE_SIGN_ENTITLEMENTS = RideSessionActivity/CanaryRideSessionActivity.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3003,7 +3003,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3054,7 +3054,7 @@ CODE_SIGN_ENTITLEMENTS = WatchWidget/ProdWatchWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -3112,7 +3112,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -3163,7 +3163,7 @@ CODE_SIGN_ENTITLEMENTS = WatchWidget/CanaryWatchWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -3220,7 +3220,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -3268,7 +3268,7 @@ CODE_SIGN_ENTITLEMENTS = RideSessionActivity/ProdRideSessionActivity.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3319,7 +3319,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3538,7 +3538,7 @@ CODE_SIGN_ENTITLEMENTS = ProdAppClip/ProdAppClip.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -3594,7 +3594,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -3644,7 +3644,7 @@ CODE_SIGN_ENTITLEMENTS = CanaryAppClip/CanaryAppClip.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -3702,7 +3702,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 2538; + CURRENT_PROJECT_VERSION = 2539; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = E6R2G33Z36; ENABLE_USER_SCRIPT_SANDBOXING = NO; diff --git a/src/@types/graphql.d.ts b/src/@types/graphql.d.ts index 06cdebce9..fce9ab3f2 100644 --- a/src/@types/graphql.d.ts +++ b/src/@types/graphql.d.ts @@ -66,6 +66,7 @@ export type Line = { nameRoman: Maybe; nameRomanIpa: Maybe; nameShort: Maybe; + nameTtsSegments: Maybe>; station: Maybe; status: Maybe; trainType: Maybe; @@ -88,6 +89,7 @@ export type LineNested = { nameRoman: Maybe; nameRomanIpa: Maybe; nameShort: Maybe; + nameTtsSegments: Maybe>; station: Maybe; status: Maybe; trainType: Maybe; @@ -263,6 +265,7 @@ export type Station = { nameKorean: Maybe; nameRoman: Maybe; nameRomanIpa: Maybe; + nameTtsSegments: Maybe>; openedAt: Maybe; postalCode: Maybe; prefectureId: Maybe; @@ -293,6 +296,7 @@ export type StationNested = { nameKorean: Maybe; nameRoman: Maybe; nameRomanIpa: Maybe; + nameTtsSegments: Maybe>; openedAt: Maybe; postalCode: Maybe; prefectureId: Maybe; @@ -343,6 +347,7 @@ export type TrainType = { nameKorean: Maybe; nameRoman: Maybe; nameRomanIpa: Maybe; + nameTtsSegments: Maybe>; typeId: Maybe; }; @@ -371,6 +376,7 @@ export type TrainTypeNested = { nameKorean: Maybe; nameRoman: Maybe; nameRomanIpa: Maybe; + nameTtsSegments: Maybe>; typeId: Maybe; }; @@ -381,6 +387,23 @@ export enum TransportType { TransportTypeUnspecified = 'TransportTypeUnspecified', } +export enum TtsAlphabet { + Ipa = 'Ipa', + Plain = 'Plain', + TtsAlphabetUnspecified = 'TtsAlphabetUnspecified', + Yomigana = 'Yomigana', +} + +export type TtsSegment = { + __typename: 'TtsSegment'; + alphabet: Maybe; + fallbackText: Maybe; + lang: Maybe; + pronunciation: Maybe; + separator: Maybe; + surface: Maybe; +}; + export type CompanyFieldsFragment = { __typename: 'Company'; id: number | null | undefined; diff --git a/src/__fixtures__/line.ts b/src/__fixtures__/line.ts index 318c5661c..f2a7abef8 100644 --- a/src/__fixtures__/line.ts +++ b/src/__fixtures__/line.ts @@ -5,6 +5,7 @@ import { OperationStatus, StopCondition, TransportType, + TtsAlphabet, } from '~/@types/graphql'; export const TOEI_SHINJUKU_LINE_LOCAL: Line = { @@ -24,6 +25,17 @@ export const TOEI_SHINJUKU_LINE_LOCAL: Line = { nameFull: '都営新宿線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameRoman: 'Toei Shinjuku Line', nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', @@ -53,6 +65,17 @@ export const TOEI_SHINJUKU_LINE_LOCAL: Line = { nameChinese: '新宿', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameKorean: '신주쿠', threeLetterCode: undefined, prefectureId: 13, @@ -95,6 +118,17 @@ export const RYOMO_LINE: Line = { nameFull: '両毛線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameRoman: 'Ryomo Line', nameChinese: '两毛线', nameKorean: '료모선', @@ -116,6 +150,17 @@ export const RYOMO_LINE: Line = { nameChinese: '高崎', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameKorean: '다카사키', threeLetterCode: undefined, prefectureId: 10, diff --git a/src/__fixtures__/station.ts b/src/__fixtures__/station.ts index afd371dfc..8da4ef30a 100644 --- a/src/__fixtures__/station.ts +++ b/src/__fixtures__/station.ts @@ -5,6 +5,7 @@ import { type Station, StopCondition, TransportType, + TtsAlphabet, } from '~/@types/graphql'; export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ @@ -17,6 +18,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'ヤマノテセン', nameFull: '山手線', nameRoman: 'Yamanote Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Yamanote Line', + }, + ], nameChinese: '山手线', nameKorean: '야마노테선', color: '#80C241', @@ -37,6 +49,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -72,6 +95,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'チュウオウセン', nameFull: '中央線', nameRoman: 'Chuo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Chuo Line', + }, + ], nameChinese: '中央线快速', nameKorean: '츄오 쾌속선', color: '#F15A22', @@ -92,6 +126,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -127,6 +172,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'チュウオウ・ソウブセン', nameFull: '中央・総武緩行線', nameRoman: 'Chuo-Sobu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Chuo-Sobu Line', + }, + ], nameChinese: '中央・总武线', nameKorean: '주오·소부선', color: '#FFD400', @@ -147,6 +203,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -182,6 +249,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'サイキョウセン', nameFull: '埼京線', nameRoman: 'Saikyo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Saikyo Line', + }, + ], nameChinese: '埼京线', nameKorean: '사이쿄선', color: '#00B48D', @@ -202,6 +280,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -237,6 +326,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'ショウナンシンジュクライン', nameFull: '湘南新宿ライン', nameRoman: 'Shonan-Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shonan-Shinjuku Line', + }, + ], nameChinese: '湘南新宿线', nameKorean: '쇼난 신주쿠 라인', color: '#F68B1E', @@ -257,6 +357,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -292,6 +403,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'ケイオウセン', nameFull: '京王線', nameRoman: 'Keio Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Keio Line', + }, + ], nameChinese: '京王线', nameKorean: '게이오선', color: '#CA0073', @@ -312,6 +434,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -346,6 +479,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'ケイオウシンセン', nameFull: '京王新線', nameRoman: 'Keio New Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Keio New Line', + }, + ], nameChinese: '京王新线', nameKorean: '게이오 신선', color: '#CA0073', @@ -366,6 +510,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新線新宿', nameKatakana: 'シンセンシンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -400,6 +555,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'オダキュウセン', nameFull: '小田急小田原線', nameRoman: 'Odakyu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Odakyu Line', + }, + ], nameChinese: '小田急线', nameKorean: '오다큐선', color: '#2F79BC', @@ -420,6 +586,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -457,6 +634,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロマルノウチセン', nameFull: '東京メトロ丸ノ内線', nameRoman: 'Tokyo Metro Marunouchi Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Marunouchi Line', + }, + ], nameChinese: '丸之内线', nameKorean: '마루노우치선', color: '#E60012', @@ -477,6 +665,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -515,6 +714,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'ソウテツ・ジェイアールチョクツウセン', nameFull: '相鉄・JR直通線', nameRoman: 'Sotetsu-JR Link Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sotetsu-JR Link Line', + }, + ], nameChinese: '相铁·JR直通线', nameKorean: '소테츠·JR직통선', color: '#000080', @@ -535,6 +745,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -570,6 +791,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイオオエドセン', nameFull: '都営大江戸線', nameRoman: 'Toei Oedo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Oedo Line', + }, + ], nameChinese: '都营大江户线', nameKorean: '도에이 오에도선', color: '#B6007A', @@ -590,6 +822,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -624,6 +867,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -644,6 +898,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -685,6 +950,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -703,6 +979,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -716,6 +1003,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿', nameKatakana: 'シンジュク', nameRoman: 'Shinjuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku', + }, + ], nameChinese: '新宿', nameKorean: '신주쿠', prefectureId: 13, @@ -757,6 +1055,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロマルノウチセン', nameFull: '東京メトロ丸ノ内線', nameRoman: 'Tokyo Metro Marunouchi Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Marunouchi Line', + }, + ], nameChinese: '丸之内线', nameKorean: '마루노우치선', color: '#E60012', @@ -777,6 +1086,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿三丁目', nameKatakana: 'シンジュクサンチョウメ', nameRoman: 'Shinjuku-sanchome', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku-sanchome', + }, + ], nameChinese: '新宿三丁目', nameKorean: '신주쿠산초메', prefectureId: 13, @@ -812,6 +1132,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロフクトシンセン', nameFull: '東京メトロ副都心線', nameRoman: 'Tokyo Metro Fukutoshin Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Fukutoshin Line', + }, + ], nameChinese: '副都心线', nameKorean: '후쿠토신선', color: '#BB641D', @@ -832,6 +1163,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿三丁目', nameKatakana: 'シンジュクサンチョウメ', nameRoman: 'Shinjuku-sanchome', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku-sanchome', + }, + ], nameChinese: '新宿三丁目', nameKorean: '신주쿠산초메', prefectureId: 13, @@ -867,6 +1209,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -887,6 +1240,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿三丁目', nameKatakana: 'シンジュクサンチョウメ', nameRoman: 'Shinjuku-sanchome', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku-sanchome', + }, + ], nameChinese: '新宿三丁目', nameKorean: '신주쿠산초메', prefectureId: 13, @@ -928,6 +1292,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿三丁目', nameKatakana: 'シンジュクサンチョウメ', nameRoman: 'Shinjuku-sanchome', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku-sanchome', + }, + ], nameChinese: '新宿三丁目', nameKorean: '신주쿠산초메', prefectureId: 13, @@ -946,6 +1321,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -959,6 +1345,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '新宿三丁目', nameKatakana: 'シンジュクサンチョウメ', nameRoman: 'Shinjuku-sanchome', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinjuku-sanchome', + }, + ], nameChinese: '新宿三丁目', nameKorean: '신주쿠산초메', prefectureId: 13, @@ -997,6 +1394,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1017,6 +1425,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '曙橋', nameKatakana: 'アケボノバシ', nameRoman: 'Akebonobashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Akebonobashi', + }, + ], nameChinese: '曙桥', nameKorean: '아케보노바시', prefectureId: 13, @@ -1058,6 +1477,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '曙橋', nameKatakana: 'アケボノバシ', nameRoman: 'Akebonobashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Akebonobashi', + }, + ], nameChinese: '曙桥', nameKorean: '아케보노바시', prefectureId: 13, @@ -1076,6 +1506,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1089,6 +1530,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '曙橋', nameKatakana: 'アケボノバシ', nameRoman: 'Akebonobashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Akebonobashi', + }, + ], nameChinese: '曙桥', nameKorean: '아케보노바시', prefectureId: 13, @@ -1127,6 +1579,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'チュウオウ・ソウブセン', nameFull: '中央・総武緩行線', nameRoman: 'Chuo-Sobu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Chuo-Sobu Line', + }, + ], nameChinese: '中央・总武线', nameKorean: '주오·소부선', color: '#FFD400', @@ -1147,6 +1610,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '市ケ谷', nameKatakana: 'イチガヤ', nameRoman: 'Ichigaya', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichigaya', + }, + ], nameChinese: '市谷', nameKorean: '이치가야', prefectureId: 13, @@ -1181,6 +1655,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロユウラクチョウセン', nameFull: '東京メトロ有楽町線', nameRoman: 'Tokyo Metro Yurakucho Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Yurakucho Line', + }, + ], nameChinese: '有乐町线', nameKorean: '유라쿠초선', color: '#C1A470', @@ -1201,6 +1686,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '市ケ谷', nameKatakana: 'イチガヤ', nameRoman: 'Ichigaya', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichigaya', + }, + ], nameChinese: '市谷', nameKorean: '이치가야', prefectureId: 13, @@ -1235,6 +1731,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロナンボクセン', nameFull: '東京メトロ南北線', nameRoman: 'Tokyo Metro Namboku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Namboku Line', + }, + ], nameChinese: '南北线', nameKorean: '난보쿠선', color: '#00ADA9', @@ -1255,6 +1762,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '市ケ谷', nameKatakana: 'イチガヤ', nameRoman: 'Ichigaya', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichigaya', + }, + ], nameChinese: '市谷', nameKorean: '이치가야', prefectureId: 13, @@ -1289,6 +1807,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1309,6 +1838,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '市ヶ谷', nameKatakana: 'イチガヤ', nameRoman: 'Ichigaya', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichigaya', + }, + ], nameChinese: '市谷', nameKorean: '이치가야', prefectureId: 13, @@ -1350,6 +1890,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '市ヶ谷', nameKatakana: 'イチガヤ', nameRoman: 'Ichigaya', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichigaya', + }, + ], nameChinese: '市谷', nameKorean: '이치가야', prefectureId: 13, @@ -1368,6 +1919,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1381,6 +1943,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '市ヶ谷', nameKatakana: 'イチガヤ', nameRoman: 'Ichigaya', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichigaya', + }, + ], nameChinese: '市谷', nameKorean: '이치가야', prefectureId: 13, @@ -1419,6 +1992,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロトウザイセン', nameFull: '東京メトロ東西線', nameRoman: 'Tokyo Metro Tozai Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Tozai Line', + }, + ], nameChinese: '东西线', nameKorean: '도자이선', color: '#00A7DB', @@ -1439,6 +2023,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '九段下', nameKatakana: 'クダンシタ', nameRoman: 'Kudanshita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kudanshita', + }, + ], nameChinese: '九段下', nameKorean: '구단시타', prefectureId: 13, @@ -1473,6 +2068,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロハンゾウモンセン', nameFull: '東京メトロ半蔵門線', nameRoman: 'Tokyo Metro Hanzomon Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Hanzomon Line', + }, + ], nameChinese: '半藏门线', nameKorean: '한조몬선', color: '#9B7CB6', @@ -1493,6 +2099,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '九段下', nameKatakana: 'クダンシタ', nameRoman: 'Kudanshita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kudanshita', + }, + ], nameChinese: '九段下', nameKorean: '구단시타', prefectureId: 13, @@ -1527,6 +2144,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1547,6 +2175,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '九段下', nameKatakana: 'クダンシタ', nameRoman: 'Kudanshita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kudanshita', + }, + ], nameChinese: '九段下', nameKorean: '구단시타', prefectureId: 13, @@ -1588,6 +2227,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '九段下', nameKatakana: 'クダンシタ', nameRoman: 'Kudanshita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kudanshita', + }, + ], nameChinese: '九段下', nameKorean: '구단시타', prefectureId: 13, @@ -1606,6 +2256,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1619,6 +2280,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '九段下', nameKatakana: 'クダンシタ', nameRoman: 'Kudanshita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kudanshita', + }, + ], nameChinese: '九段下', nameKorean: '구단시타', prefectureId: 13, @@ -1657,6 +2329,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロハンゾウモンセン', nameFull: '東京メトロ半蔵門線', nameRoman: 'Tokyo Metro Hanzomon Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Hanzomon Line', + }, + ], nameChinese: '半藏门线', nameKorean: '한조몬선', color: '#9B7CB6', @@ -1677,6 +2360,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '神保町', nameKatakana: 'ジンボウチョウ', nameRoman: 'Jimbocho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Jimbocho', + }, + ], nameChinese: '神保町', nameKorean: '진보초', prefectureId: 13, @@ -1711,6 +2405,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイミタセン', nameFull: '都営三田線', nameRoman: 'Toei Mita Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Mita Line', + }, + ], nameChinese: '都营三田线', nameKorean: '도에이 미타선', color: '#0079C2', @@ -1731,6 +2436,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '神保町', nameKatakana: 'ジンボウチョウ', nameRoman: 'Jimbocho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Jimbocho', + }, + ], nameChinese: '神保町', nameKorean: '진보초', prefectureId: 13, @@ -1765,6 +2481,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1785,6 +2512,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '神保町', nameKatakana: 'ジンボウチョウ', nameRoman: 'Jimbocho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Jimbocho', + }, + ], nameChinese: '神保町', nameKorean: '진보초', prefectureId: 13, @@ -1826,6 +2564,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '神保町', nameKatakana: 'ジンボウチョウ', nameRoman: 'Jimbocho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Jimbocho', + }, + ], nameChinese: '神保町', nameKorean: '진보초', prefectureId: 13, @@ -1844,6 +2593,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1857,6 +2617,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '神保町', nameKatakana: 'ジンボウチョウ', nameRoman: 'Jimbocho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Jimbocho', + }, + ], nameChinese: '神保町', nameKorean: '진보초', prefectureId: 13, @@ -1898,6 +2669,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロマルノウチセン', nameFull: '東京メトロ丸ノ内線', nameRoman: 'Tokyo Metro Marunouchi Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Marunouchi Line', + }, + ], nameChinese: '丸之内线', nameKorean: '마루노우치선', color: '#E60012', @@ -1918,6 +2700,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '淡路町', nameKatakana: 'アワジチョウ', nameRoman: 'Awajicho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Awajicho', + }, + ], nameChinese: '淡路町', nameKorean: '아와지초', prefectureId: 13, @@ -1952,6 +2745,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -1972,6 +2776,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '小川町', nameKatakana: 'オガワマチ', nameRoman: 'Ogawamachi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ogawamachi', + }, + ], nameChinese: '小川町', nameKorean: '오가와마치', prefectureId: 13, @@ -2013,6 +2828,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '小川町', nameKatakana: 'オガワマチ', nameRoman: 'Ogawamachi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ogawamachi', + }, + ], nameChinese: '小川町', nameKorean: '오가와마치', prefectureId: 13, @@ -2031,6 +2857,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2044,6 +2881,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '小川町', nameKatakana: 'オガワマチ', nameRoman: 'Ogawamachi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ogawamachi', + }, + ], nameChinese: '小川町', nameKorean: '오가와마치', prefectureId: 13, @@ -2082,6 +2930,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2102,6 +2961,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '岩本町', nameKatakana: 'イワモトチョウ', nameRoman: 'Iwamotocho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwamotocho', + }, + ], nameChinese: '岩本町', nameKorean: '이와모토초', prefectureId: 13, @@ -2143,6 +3013,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '岩本町', nameKatakana: 'イワモトチョウ', nameRoman: 'Iwamotocho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwamotocho', + }, + ], nameChinese: '岩本町', nameKorean: '이와모토초', prefectureId: 13, @@ -2161,6 +3042,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2174,6 +3066,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '岩本町', nameKatakana: 'イワモトチョウ', nameRoman: 'Iwamotocho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwamotocho', + }, + ], nameChinese: '岩本町', nameKorean: '이와모토초', prefectureId: 13, @@ -2212,6 +3115,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'ソウブホンセン', nameFull: '総武本線', nameRoman: 'Sobu Main Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sobu Main Line', + }, + ], nameChinese: '总武本线', nameKorean: '소부 본선', color: '#007AC0', @@ -2232,6 +3146,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '馬喰町', nameKatakana: 'バクロチョウ', nameRoman: 'Bakurochō', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Bakurochō', + }, + ], nameChinese: '马喰町', nameKorean: '바쿠로초', prefectureId: 13, @@ -2266,6 +3191,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイアサクサセン', nameFull: '都営浅草線', nameRoman: 'Toei Asakusa Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Asakusa Line', + }, + ], nameChinese: '都营浅草线', nameKorean: '도에이 아사쿠사선', color: '#EC6E65', @@ -2286,6 +3222,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '東日本橋', nameKatakana: 'ヒガシニホンバシ', nameRoman: 'Higashi-nihombashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Higashi-nihombashi', + }, + ], nameChinese: '东日本桥', nameKorean: '히가시니혼바시', prefectureId: 13, @@ -2320,6 +3267,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2340,6 +3298,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '馬喰横山', nameKatakana: 'バクロヨコヤマ', nameRoman: 'Bakuroyokoyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Bakuroyokoyama', + }, + ], nameChinese: '马喰横山', nameKorean: '바쿠로요코야마', prefectureId: 13, @@ -2381,6 +3350,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '馬喰横山', nameKatakana: 'バクロヨコヤマ', nameRoman: 'Bakuroyokoyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Bakuroyokoyama', + }, + ], nameChinese: '马喰横山', nameKorean: '바쿠로요코야마', prefectureId: 13, @@ -2399,6 +3379,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2412,6 +3403,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '馬喰横山', nameKatakana: 'バクロヨコヤマ', nameRoman: 'Bakuroyokoyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Bakuroyokoyama', + }, + ], nameChinese: '马喰横山', nameKorean: '바쿠로요코야마', prefectureId: 13, @@ -2450,6 +3452,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2470,6 +3483,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '浜町', nameKatakana: 'ハマチョウ', nameRoman: 'Hamacho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Hamacho', + }, + ], nameChinese: '滨町', nameKorean: '하마초', prefectureId: 13, @@ -2511,6 +3535,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '浜町', nameKatakana: 'ハマチョウ', nameRoman: 'Hamacho', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Hamacho', + }, + ], nameChinese: '滨町', nameKorean: '하마초', prefectureId: 13, @@ -2529,6 +3564,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2542,7 +3588,18 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '浜町', nameKatakana: 'ハマチョウ', nameRoman: 'Hamacho', - nameChinese: '滨町', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Hamacho', + }, + ], + nameChinese: '滨町', nameKorean: '하마초', prefectureId: 13, postalCode: '103-0007', @@ -2580,6 +3637,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイオオエドセン', nameFull: '都営大江戸線', nameRoman: 'Toei Oedo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Oedo Line', + }, + ], nameChinese: '都营大江户线', nameKorean: '도에이 오에도선', color: '#B6007A', @@ -2600,6 +3668,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '森下', nameKatakana: 'モリシタ', nameRoman: 'Morishita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Morishita', + }, + ], nameChinese: '森下', nameKorean: '모리시타', prefectureId: 13, @@ -2634,6 +3713,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2654,6 +3744,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '森下', nameKatakana: 'モリシタ', nameRoman: 'Morishita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Morishita', + }, + ], nameChinese: '森下', nameKorean: '모리시타', prefectureId: 13, @@ -2695,6 +3796,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '森下', nameKatakana: 'モリシタ', nameRoman: 'Morishita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Morishita', + }, + ], nameChinese: '森下', nameKorean: '모리시타', prefectureId: 13, @@ -2713,6 +3825,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2726,6 +3849,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '森下', nameKatakana: 'モリシタ', nameRoman: 'Morishita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Morishita', + }, + ], nameChinese: '森下', nameKorean: '모리시타', prefectureId: 13, @@ -2764,6 +3898,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2784,6 +3929,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '菊川', nameKatakana: 'キクカワ', nameRoman: 'Kikukawa', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kikukawa', + }, + ], nameChinese: '菊川', nameKorean: '기쿠카와', prefectureId: 13, @@ -2825,6 +3981,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '菊川', nameKatakana: 'キクカワ', nameRoman: 'Kikukawa', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kikukawa', + }, + ], nameChinese: '菊川', nameKorean: '기쿠카와', prefectureId: 13, @@ -2843,6 +4010,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2856,6 +4034,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '菊川', nameKatakana: 'キクカワ', nameRoman: 'Kikukawa', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kikukawa', + }, + ], nameChinese: '菊川', nameKorean: '기쿠카와', prefectureId: 13, @@ -2894,6 +4083,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トウキョウメトロハンゾウモンセン', nameFull: '東京メトロ半蔵門線', nameRoman: 'Tokyo Metro Hanzomon Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tokyo Metro Hanzomon Line', + }, + ], nameChinese: '半藏门线', nameKorean: '한조몬선', color: '#9B7CB6', @@ -2914,6 +4114,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '住吉', nameKatakana: 'スミヨシ', nameRoman: 'Sumiyoshi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sumiyoshi', + }, + ], nameChinese: '住吉', nameKorean: '스미요시', prefectureId: 13, @@ -2948,6 +4159,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -2968,6 +4190,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '住吉', nameKatakana: 'スミヨシ', nameRoman: 'Sumiyoshi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sumiyoshi', + }, + ], nameChinese: '住吉', nameKorean: '스미요시', prefectureId: 13, @@ -3009,6 +4242,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '住吉', nameKatakana: 'スミヨシ', nameRoman: 'Sumiyoshi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sumiyoshi', + }, + ], nameChinese: '住吉', nameKorean: '스미요시', prefectureId: 13, @@ -3027,6 +4271,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3040,6 +4295,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '住吉', nameKatakana: 'スミヨシ', nameRoman: 'Sumiyoshi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sumiyoshi', + }, + ], nameChinese: '住吉', nameKorean: '스미요시', prefectureId: 13, @@ -3078,6 +4344,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3098,6 +4375,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '西大島', nameKatakana: 'ニシオオジマ', nameRoman: 'Nishi-ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Nishi-ojima', + }, + ], nameChinese: '西大岛', nameKorean: '니시오지마', prefectureId: 13, @@ -3139,6 +4427,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '西大島', nameKatakana: 'ニシオオジマ', nameRoman: 'Nishi-ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Nishi-ojima', + }, + ], nameChinese: '西大岛', nameKorean: '니시오지마', prefectureId: 13, @@ -3157,6 +4456,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3170,6 +4480,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '西大島', nameKatakana: 'ニシオオジマ', nameRoman: 'Nishi-ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Nishi-ojima', + }, + ], nameChinese: '西大岛', nameKorean: '니시오지마', prefectureId: 13, @@ -3208,6 +4529,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3228,6 +4560,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '大島', nameKatakana: 'オオジマ', nameRoman: 'Ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ojima', + }, + ], nameChinese: '大岛', nameKorean: '오지마', prefectureId: 13, @@ -3269,6 +4612,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '大島', nameKatakana: 'オオジマ', nameRoman: 'Ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ojima', + }, + ], nameChinese: '大岛', nameKorean: '오지마', prefectureId: 13, @@ -3287,6 +4641,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3300,6 +4665,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '大島', nameKatakana: 'オオジマ', nameRoman: 'Ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ojima', + }, + ], nameChinese: '大岛', nameKorean: '오지마', prefectureId: 13, @@ -3338,6 +4714,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3358,6 +4745,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '東大島', nameKatakana: 'ヒガシオオジマ', nameRoman: 'Higashi-ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Higashi-ojima', + }, + ], nameChinese: '东大岛', nameKorean: '히가시오지마', prefectureId: 13, @@ -3399,6 +4797,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '東大島', nameKatakana: 'ヒガシオオジマ', nameRoman: 'Higashi-ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Higashi-ojima', + }, + ], nameChinese: '东大岛', nameKorean: '히가시오지마', prefectureId: 13, @@ -3417,6 +4826,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3430,6 +4850,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '東大島', nameKatakana: 'ヒガシオオジマ', nameRoman: 'Higashi-ojima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Higashi-ojima', + }, + ], nameChinese: '东大岛', nameKorean: '히가시오지마', prefectureId: 13, @@ -3468,6 +4899,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3488,6 +4930,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '船堀', nameKatakana: 'フナボリ', nameRoman: 'Funabori', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Funabori', + }, + ], nameChinese: '船堀', nameKorean: '후나보리', prefectureId: 13, @@ -3529,6 +4982,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '船堀', nameKatakana: 'フナボリ', nameRoman: 'Funabori', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Funabori', + }, + ], nameChinese: '船堀', nameKorean: '후나보리', prefectureId: 13, @@ -3547,6 +5011,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3560,6 +5035,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '船堀', nameKatakana: 'フナボリ', nameRoman: 'Funabori', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Funabori', + }, + ], nameChinese: '船堀', nameKorean: '후나보리', prefectureId: 13, @@ -3598,6 +5084,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3618,6 +5115,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '一之江', nameKatakana: 'イチノエ', nameRoman: 'Ichinoe', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichinoe', + }, + ], nameChinese: '一之江', nameKorean: '이치노에', prefectureId: 13, @@ -3659,6 +5167,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '一之江', nameKatakana: 'イチノエ', nameRoman: 'Ichinoe', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichinoe', + }, + ], nameChinese: '一之江', nameKorean: '이치노에', prefectureId: 13, @@ -3677,6 +5196,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3690,6 +5220,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '一之江', nameKatakana: 'イチノエ', nameRoman: 'Ichinoe', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ichinoe', + }, + ], nameChinese: '一之江', nameKorean: '이치노에', prefectureId: 13, @@ -3728,6 +5269,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3748,6 +5300,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '瑞江', nameKatakana: 'ミズエ', nameRoman: 'Mizue', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Mizue', + }, + ], nameChinese: '瑞江', nameKorean: '미즈에', prefectureId: 13, @@ -3789,6 +5352,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '瑞江', nameKatakana: 'ミズエ', nameRoman: 'Mizue', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Mizue', + }, + ], nameChinese: '瑞江', nameKorean: '미즈에', prefectureId: 13, @@ -3807,6 +5381,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3820,6 +5405,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '瑞江', nameKatakana: 'ミズエ', nameRoman: 'Mizue', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Mizue', + }, + ], nameChinese: '瑞江', nameKorean: '미즈에', prefectureId: 13, @@ -3858,6 +5454,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3878,6 +5485,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '篠崎', nameKatakana: 'シノザキ', nameRoman: 'Shinozaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinozaki', + }, + ], nameChinese: '筱崎', nameKorean: '시노자키', prefectureId: 13, @@ -3919,6 +5537,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '篠崎', nameKatakana: 'シノザキ', nameRoman: 'Shinozaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinozaki', + }, + ], nameChinese: '筱崎', nameKorean: '시노자키', prefectureId: 13, @@ -3937,6 +5566,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -3950,6 +5590,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '篠崎', nameKatakana: 'シノザキ', nameRoman: 'Shinozaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shinozaki', + }, + ], nameChinese: '筱崎', nameKorean: '시노자키', prefectureId: 13, @@ -3988,6 +5639,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'チュウオウ・ソウブセン', nameFull: '中央・総武緩行線', nameRoman: 'Chuo-Sobu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Chuo-Sobu Line', + }, + ], nameChinese: '中央・总武线', nameKorean: '주오·소부선', color: '#FFD400', @@ -4008,6 +5670,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '本八幡', nameKatakana: 'モトヤワタ', nameRoman: 'Motoyawata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Motoyawata', + }, + ], nameChinese: '本八幡', nameKorean: '모토야와타', prefectureId: 12, @@ -4042,6 +5715,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'ケイセイホンセン', nameFull: '京成本線', nameRoman: 'Keisei Main Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Keisei Main Line', + }, + ], nameChinese: '京成本线', nameKorean: '게이세이 본선', color: '#005AAA', @@ -4062,6 +5746,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '京成八幡', nameKatakana: 'ケイセイヤワタ', nameRoman: 'Keisei-Yawata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Keisei-Yawata', + }, + ], nameChinese: '京成八幡', nameKorean: '게이세이야와타', prefectureId: 12, @@ -4096,6 +5791,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -4116,6 +5822,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '本八幡', nameKatakana: 'モトヤワタ', nameRoman: 'Motoyawata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Motoyawata', + }, + ], nameChinese: '本八幡', nameKorean: '모토야와타', prefectureId: 12, @@ -4157,6 +5874,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '本八幡', nameKatakana: 'モトヤワタ', nameRoman: 'Motoyawata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Motoyawata', + }, + ], nameChinese: '本八幡', nameKorean: '모토야와타', prefectureId: 12, @@ -4175,6 +5903,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ nameKatakana: 'トエイシンジュクセン', nameFull: '都営新宿線', nameRoman: 'Toei Shinjuku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Toei Shinjuku Line', + }, + ], nameChinese: '都营新宿线', nameKorean: '도에이 신주쿠선', color: '#B0BF1E', @@ -4188,6 +5927,17 @@ export const TOEI_SHINJUKU_LINE_STATIONS: Station[] = [ name: '本八幡', nameKatakana: 'モトヤワタ', nameRoman: 'Motoyawata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Motoyawata', + }, + ], nameChinese: '本八幡', nameKorean: '모토야와타', prefectureId: 12, @@ -4229,6 +5979,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ジョウエツシンカンセン', nameFull: '上越新幹線', nameRoman: 'Joetsu Shinkansen', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Joetsu Shinkansen', + }, + ], nameChinese: '上越新干线', nameKorean: '조에쓰 신칸센', color: '#008000', @@ -4242,6 +6003,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4276,6 +6048,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ホクリクシンカンセン', nameFull: '北陸新幹線', nameRoman: 'Hokuriku Shinkansen', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Hokuriku Shinkansen', + }, + ], nameChinese: '北陆新干线', nameKorean: '호쿠리쿠 신칸센', color: '#008000', @@ -4289,6 +6072,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4323,6 +6117,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ハチコウセン', nameFull: '八高線', nameRoman: 'Hachiko Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Hachiko Line', + }, + ], nameChinese: '八高线', nameKorean: '하치코선', color: '#A8A39D', @@ -4336,6 +6141,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4376,6 +6192,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'タカサキセン', nameFull: '高崎線', nameRoman: 'Takasaki Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki Line', + }, + ], nameChinese: '高崎线', nameKorean: '다카사키선', color: '#F68B1E', @@ -4389,6 +6216,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4423,6 +6261,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'シンエツホンセン', nameFull: '信越本線', nameRoman: 'Shin’etsu Main Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shin’etsu Main Line', + }, + ], nameChinese: '信越本线', nameKorean: '신에쓰 본선', color: '#9ACD32', @@ -4436,6 +6285,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4470,6 +6330,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -4483,6 +6354,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4517,6 +6399,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ジョウエツセン', nameFull: '上越線', nameRoman: 'Joetsu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Joetsu Line', + }, + ], nameChinese: '上越线', nameKorean: '조에쓰선', color: '#00B3E6', @@ -4530,6 +6423,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4564,6 +6468,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ジョウシンデンテツ', nameFull: '上信電鉄', nameRoman: 'Joshin Dentetsu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Joshin Dentetsu Line', + }, + ], nameChinese: '上信电铁', nameKorean: '조신 전철', color: '#457BC6', @@ -4577,6 +6492,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'TAKASAKI', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'TAKASAKI', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4611,6 +6537,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4629,6 +6566,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -4642,6 +6590,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎', nameKatakana: 'タカサキ', nameRoman: 'Takasaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasaki', + }, + ], nameChinese: '高崎', nameKorean: '다카사키', prefectureId: 10, @@ -4680,6 +6639,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -4693,6 +6663,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎問屋町', nameKatakana: 'タカサキトンヤマチ', nameRoman: 'Takasakitonyamachi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasakitonyamachi', + }, + ], nameChinese: '高崎问屋町', nameKorean: '다카사키톤야마치', prefectureId: 10, @@ -4727,6 +6708,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ジョウエツセン', nameFull: '上越線', nameRoman: 'Joetsu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Joetsu Line', + }, + ], nameChinese: '上越线', nameKorean: '조에쓰선', color: '#00B3E6', @@ -4740,6 +6732,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎問屋町', nameKatakana: 'タカサキトンヤマチ', nameRoman: 'Takasakitonyamachi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasakitonyamachi', + }, + ], nameChinese: '高崎问屋町', nameKorean: '다카사키톤야마치', prefectureId: 10, @@ -4774,6 +6777,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎問屋町', nameKatakana: 'タカサキトンヤマチ', nameRoman: 'Takasakitonyamachi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasakitonyamachi', + }, + ], nameChinese: '高崎问屋町', nameKorean: '다카사키톤야마치', prefectureId: 10, @@ -4792,6 +6806,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -4805,6 +6830,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '高崎問屋町', nameKatakana: 'タカサキトンヤマチ', nameRoman: 'Takasakitonyamachi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Takasakitonyamachi', + }, + ], nameChinese: '高崎问屋町', nameKorean: '다카사키톤야마치', prefectureId: 10, @@ -4843,6 +6879,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -4856,6 +6903,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '井野', nameKatakana: 'イノ', nameRoman: 'Ino', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ino', + }, + ], nameChinese: '井野', nameKorean: '이노', prefectureId: 10, @@ -4890,6 +6948,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ジョウエツセン', nameFull: '上越線', nameRoman: 'Joetsu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Joetsu Line', + }, + ], nameChinese: '上越线', nameKorean: '조에쓰선', color: '#00B3E6', @@ -4903,6 +6972,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '井野', nameKatakana: 'イノ', nameRoman: 'Ino', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ino', + }, + ], nameChinese: '井野', nameKorean: '이노', prefectureId: 10, @@ -4937,6 +7017,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '井野', nameKatakana: 'イノ', nameRoman: 'Ino', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ino', + }, + ], nameChinese: '井野', nameKorean: '이노', prefectureId: 10, @@ -4955,6 +7046,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -4968,6 +7070,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '井野', nameKatakana: 'イノ', nameRoman: 'Ino', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ino', + }, + ], nameChinese: '井野', nameKorean: '이노', prefectureId: 10, @@ -5006,6 +7119,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5019,6 +7143,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '新前橋', nameKatakana: 'シンマエバシ', nameRoman: 'Shim-Maebashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shim-Maebashi', + }, + ], nameChinese: '新前桥', nameKorean: '신마에바시', prefectureId: 10, @@ -5053,6 +7188,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ジョウエツセン', nameFull: '上越線', nameRoman: 'Joetsu Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Joetsu Line', + }, + ], nameChinese: '上越线', nameKorean: '조에쓰선', color: '#00B3E6', @@ -5066,6 +7212,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '新前橋', nameKatakana: 'シンマエバシ', nameRoman: 'Shim-Maebashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shim-Maebashi', + }, + ], nameChinese: '新前桥', nameKorean: '신마에바시', prefectureId: 10, @@ -5100,6 +7257,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '新前橋', nameKatakana: 'シンマエバシ', nameRoman: 'Shim-Maebashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shim-Maebashi', + }, + ], nameChinese: '新前桥', nameKorean: '신마에바시', prefectureId: 10, @@ -5118,6 +7286,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5131,6 +7310,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '新前橋', nameKatakana: 'シンマエバシ', nameRoman: 'Shim-Maebashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Shim-Maebashi', + }, + ], nameChinese: '新前桥', nameKorean: '신마에바시', prefectureId: 10, @@ -5169,6 +7359,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5182,6 +7383,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '前橋', nameKatakana: 'マエバシ', nameRoman: 'Maebashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Maebashi', + }, + ], nameChinese: '前桥', nameKorean: '마에바시', prefectureId: 10, @@ -5216,6 +7428,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '前橋', nameKatakana: 'マエバシ', nameRoman: 'Maebashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Maebashi', + }, + ], nameChinese: '前桥', nameKorean: '마에바시', prefectureId: 10, @@ -5234,6 +7457,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5247,6 +7481,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '前橋', nameKatakana: 'マエバシ', nameRoman: 'Maebashi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Maebashi', + }, + ], nameChinese: '前桥', nameKorean: '마에바시', prefectureId: 10, @@ -5285,6 +7530,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5298,6 +7554,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '前橋大島', nameKatakana: 'マエバシオオシマ', nameRoman: 'Maebashiōshima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Maebashiōshima', + }, + ], nameChinese: '前桥大岛', nameKorean: '마에바시오시마', prefectureId: 10, @@ -5332,6 +7599,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '前橋大島', nameKatakana: 'マエバシオオシマ', nameRoman: 'Maebashiōshima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Maebashiōshima', + }, + ], nameChinese: '前桥大岛', nameKorean: '마에바시오시마', prefectureId: 10, @@ -5350,6 +7628,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5363,6 +7652,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '前橋大島', nameKatakana: 'マエバシオオシマ', nameRoman: 'Maebashiōshima', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Maebashiōshima', + }, + ], nameChinese: '前桥大岛', nameKorean: '마에바시오시마', prefectureId: 10, @@ -5401,6 +7701,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5414,6 +7725,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '駒形', nameKatakana: 'コマガタ', nameRoman: 'Komagata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Komagata', + }, + ], nameChinese: '驹形', nameKorean: '고마가타', prefectureId: 10, @@ -5448,6 +7770,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '駒形', nameKatakana: 'コマガタ', nameRoman: 'Komagata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Komagata', + }, + ], nameChinese: '驹形', nameKorean: '고마가타', prefectureId: 10, @@ -5466,6 +7799,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5479,6 +7823,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '駒形', nameKatakana: 'コマガタ', nameRoman: 'Komagata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Komagata', + }, + ], nameChinese: '驹形', nameKorean: '고마가타', prefectureId: 10, @@ -5517,6 +7872,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5530,6 +7896,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '伊勢崎', nameKatakana: 'イセサキ', nameRoman: 'Isesaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Isesaki', + }, + ], nameChinese: '伊势崎', nameKorean: '이세사키', prefectureId: 10, @@ -5575,6 +7952,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'トウブイセサキセン', nameFull: '東武伊勢崎線', nameRoman: 'Tobu Isesaki Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tobu Isesaki Line', + }, + ], nameChinese: '东武伊势崎线', nameKorean: '도부 이세사키선', color: '#ED1A3D', @@ -5595,6 +7983,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '伊勢崎', nameKatakana: 'イセサキ', nameRoman: 'Isesaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Isesaki', + }, + ], nameChinese: '伊势崎', nameKorean: '이세사키', prefectureId: 10, @@ -5629,6 +8028,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '伊勢崎', nameKatakana: 'イセサキ', nameRoman: 'Isesaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Isesaki', + }, + ], nameChinese: '伊势崎', nameKorean: '이세사키', prefectureId: 10, @@ -5647,6 +8057,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5660,6 +8081,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '伊勢崎', nameKatakana: 'イセサキ', nameRoman: 'Isesaki', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Isesaki', + }, + ], nameChinese: '伊势崎', nameKorean: '이세사키', prefectureId: 10, @@ -5698,6 +8130,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5711,6 +8154,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '国定', nameKatakana: 'クニサダ', nameRoman: 'Kunisada', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kunisada', + }, + ], nameChinese: '国定', nameKorean: '구니사다', prefectureId: 10, @@ -5745,6 +8199,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '国定', nameKatakana: 'クニサダ', nameRoman: 'Kunisada', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kunisada', + }, + ], nameChinese: '国定', nameKorean: '구니사다', prefectureId: 10, @@ -5763,6 +8228,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5776,6 +8252,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '国定', nameKatakana: 'クニサダ', nameRoman: 'Kunisada', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kunisada', + }, + ], nameChinese: '国定', nameKorean: '구니사다', prefectureId: 10, @@ -5814,6 +8301,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5827,6 +8325,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '岩宿', nameKatakana: 'イワジュク', nameRoman: 'Iwajuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwajuku', + }, + ], nameChinese: '岩宿', nameKorean: '이와주쿠', prefectureId: 10, @@ -5861,6 +8370,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '岩宿', nameKatakana: 'イワジュク', nameRoman: 'Iwajuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwajuku', + }, + ], nameChinese: '岩宿', nameKorean: '이와주쿠', prefectureId: 10, @@ -5879,6 +8399,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5892,6 +8423,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '岩宿', nameKatakana: 'イワジュク', nameRoman: 'Iwajuku', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwajuku', + }, + ], nameChinese: '岩宿', nameKorean: '이와주쿠', prefectureId: 10, @@ -5930,6 +8472,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -5943,6 +8496,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '桐生', nameKatakana: 'キリュウ', nameRoman: 'Kiryū', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kiryū', + }, + ], nameChinese: '桐生', nameKorean: '기류', prefectureId: 10, @@ -5983,6 +8547,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ワタラセケイコクセン', nameFull: 'わたらせ渓谷鐵道わたらせ渓谷線', nameRoman: 'Watarase Keikoku Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Watarase Keikoku Line', + }, + ], nameChinese: '渡良濑溪谷线', nameKorean: '와타라세 계곡선', color: '#5B1511', @@ -5996,6 +8571,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '桐生', nameKatakana: 'キリュウ', nameRoman: 'KIRYU', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'KIRYU', + }, + ], nameChinese: '桐生', nameKorean: '기류', prefectureId: 10, @@ -6030,6 +8616,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '桐生', nameKatakana: 'キリュウ', nameRoman: 'Kiryū', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kiryū', + }, + ], nameChinese: '桐生', nameKorean: '기류', prefectureId: 10, @@ -6048,6 +8645,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6061,6 +8669,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '桐生', nameKatakana: 'キリュウ', nameRoman: 'Kiryū', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Kiryū', + }, + ], nameChinese: '桐生', nameKorean: '기류', prefectureId: 10, @@ -6099,6 +8718,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6112,6 +8742,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小俣', nameKatakana: 'オマタ', nameRoman: 'Omata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Omata', + }, + ], nameChinese: '小俣', nameKorean: '오마타', prefectureId: 9, @@ -6146,6 +8787,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小俣', nameKatakana: 'オマタ', nameRoman: 'Omata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Omata', + }, + ], nameChinese: '小俣', nameKorean: '오마타', prefectureId: 9, @@ -6164,6 +8816,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6177,6 +8840,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小俣', nameKatakana: 'オマタ', nameRoman: 'Omata', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Omata', + }, + ], nameChinese: '小俣', nameKorean: '오마타', prefectureId: 9, @@ -6215,6 +8889,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6228,6 +8913,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '山前', nameKatakana: 'ヤママエ', nameRoman: 'Yamamae', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Yamamae', + }, + ], nameChinese: '山前', nameKorean: '야마마에', prefectureId: 9, @@ -6262,6 +8958,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '山前', nameKatakana: 'ヤママエ', nameRoman: 'Yamamae', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Yamamae', + }, + ], nameChinese: '山前', nameKorean: '야마마에', prefectureId: 9, @@ -6280,6 +8987,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6293,6 +9011,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '山前', nameKatakana: 'ヤママエ', nameRoman: 'Yamamae', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Yamamae', + }, + ], nameChinese: '山前', nameKorean: '야마마에', prefectureId: 9, @@ -6331,6 +9060,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6344,6 +9084,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '足利', nameKatakana: 'アシカガ', nameRoman: 'Ashikaga', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ashikaga', + }, + ], nameChinese: '足利', nameKorean: '아시카가', prefectureId: 9, @@ -6378,6 +9129,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '足利', nameKatakana: 'アシカガ', nameRoman: 'Ashikaga', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ashikaga', + }, + ], nameChinese: '足利', nameKorean: '아시카가', prefectureId: 9, @@ -6396,6 +9158,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6409,6 +9182,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '足利', nameKatakana: 'アシカガ', nameRoman: 'Ashikaga', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ashikaga', + }, + ], nameChinese: '足利', nameKorean: '아시카가', prefectureId: 9, @@ -6447,6 +9231,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6460,6 +9255,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: 'あしかがフラワーパーク', nameKatakana: 'アシカガフラワーパーク', nameRoman: 'Ashikaga Flower Park', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ashikaga Flower Park', + }, + ], nameChinese: '足利花卉公园', nameKorean: '아시카가 플라워파크', prefectureId: 9, @@ -6494,6 +9300,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: 'あしかがフラワーパーク', nameKatakana: 'アシカガフラワーパーク', nameRoman: 'Ashikaga Flower Park', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ashikaga Flower Park', + }, + ], nameChinese: '足利花卉公园', nameKorean: '아시카가 플라워파크', prefectureId: 9, @@ -6512,6 +9329,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6525,6 +9353,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: 'あしかがフラワーパーク', nameKatakana: 'アシカガフラワーパーク', nameRoman: 'Ashikaga Flower Park', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ashikaga Flower Park', + }, + ], nameChinese: '足利花卉公园', nameKorean: '아시카가 플라워파크', prefectureId: 9, @@ -6563,6 +9402,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6576,6 +9426,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '富田', nameKatakana: 'トミタ', nameRoman: 'Tomita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tomita', + }, + ], nameChinese: '富田', nameKorean: '도미타', prefectureId: 9, @@ -6610,6 +9471,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '富田', nameKatakana: 'トミタ', nameRoman: 'Tomita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tomita', + }, + ], nameChinese: '富田', nameKorean: '도미타', prefectureId: 9, @@ -6628,6 +9500,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6641,6 +9524,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '富田', nameKatakana: 'トミタ', nameRoman: 'Tomita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tomita', + }, + ], nameChinese: '富田', nameKorean: '도미타', prefectureId: 9, @@ -6679,6 +9573,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6692,6 +9597,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '佐野', nameKatakana: 'サノ', nameRoman: 'Sano', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sano', + }, + ], nameChinese: '佐野', nameKorean: '사노', prefectureId: 9, @@ -6732,6 +9648,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'トウブサノセン', nameFull: '東武佐野線', nameRoman: 'Tobu Sano Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tobu Sano Line', + }, + ], nameChinese: '东武佐野线', nameKorean: '도부 사노선', color: '#ED1A3D', @@ -6752,6 +9679,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '佐野', nameKatakana: 'サノ', nameRoman: 'Sano', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sano', + }, + ], nameChinese: '佐野', nameKorean: '사노', prefectureId: 9, @@ -6786,6 +9724,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '佐野', nameKatakana: 'サノ', nameRoman: 'Sano', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sano', + }, + ], nameChinese: '佐野', nameKorean: '사노', prefectureId: 9, @@ -6804,6 +9753,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6817,6 +9777,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '佐野', nameKatakana: 'サノ', nameRoman: 'Sano', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Sano', + }, + ], nameChinese: '佐野', nameKorean: '사노', prefectureId: 9, @@ -6855,6 +9826,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6868,6 +9850,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '岩舟', nameKatakana: 'イワフネ', nameRoman: 'Iwafune', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwafune', + }, + ], nameChinese: '岩舟', nameKorean: '아와후네', prefectureId: 9, @@ -6902,6 +9895,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '岩舟', nameKatakana: 'イワフネ', nameRoman: 'Iwafune', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwafune', + }, + ], nameChinese: '岩舟', nameKorean: '아와후네', prefectureId: 9, @@ -6920,6 +9924,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6933,6 +9948,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '岩舟', nameKatakana: 'イワフネ', nameRoman: 'Iwafune', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Iwafune', + }, + ], nameChinese: '岩舟', nameKorean: '아와후네', prefectureId: 9, @@ -6971,6 +9997,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -6984,6 +10021,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '大平下', nameKatakana: 'オオヒラシタ', nameRoman: 'Ōhirashita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ōhirashita', + }, + ], nameChinese: '大平下', nameKorean: '오히라시타', prefectureId: 9, @@ -7018,6 +10066,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '大平下', nameKatakana: 'オオヒラシタ', nameRoman: 'Ōhirashita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ōhirashita', + }, + ], nameChinese: '大平下', nameKorean: '오히라시타', prefectureId: 9, @@ -7036,6 +10095,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -7049,6 +10119,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '大平下', nameKatakana: 'オオヒラシタ', nameRoman: 'Ōhirashita', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ōhirashita', + }, + ], nameChinese: '大平下', nameKorean: '오히라시타', prefectureId: 9, @@ -7087,6 +10168,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -7100,6 +10192,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '栃木', nameKatakana: 'トチギ', nameRoman: 'Tochigi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tochigi', + }, + ], nameChinese: '栃木', nameKorean: '도치기', prefectureId: 9, @@ -7145,6 +10248,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'トウブニッコウセン', nameFull: '東武日光線', nameRoman: 'Tobu Nikko Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tobu Nikko Line', + }, + ], nameChinese: '东武日光线', nameKorean: '도부 닛코선', color: '#FFA500', @@ -7165,6 +10279,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '栃木', nameKatakana: 'トチギ', nameRoman: 'Tochigi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tochigi', + }, + ], nameChinese: '栃木', nameKorean: '도치기', prefectureId: 9, @@ -7205,6 +10330,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'トウブウツノミヤセン', nameFull: '東武宇都宮線', nameRoman: 'Tobu Utsunomiya Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tobu Utsunomiya Line', + }, + ], nameChinese: '东武宇都宫线', nameKorean: '도부 우쓰노미야선', color: '#FFA500', @@ -7225,6 +10361,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '栃木', nameKatakana: 'トチギ', nameRoman: 'Tochigi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tochigi', + }, + ], nameChinese: '栃木', nameKorean: '토치기', prefectureId: 9, @@ -7259,6 +10406,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '栃木', nameKatakana: 'トチギ', nameRoman: 'Tochigi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tochigi', + }, + ], nameChinese: '栃木', nameKorean: '도치기', prefectureId: 9, @@ -7277,6 +10435,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -7290,6 +10459,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '栃木', nameKatakana: 'トチギ', nameRoman: 'Tochigi', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tochigi', + }, + ], nameChinese: '栃木', nameKorean: '도치기', prefectureId: 9, @@ -7328,6 +10508,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -7341,6 +10532,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '思川', nameKatakana: 'オモイガワ', nameRoman: 'Omoigawa', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Omoigawa', + }, + ], nameChinese: '思川', nameKorean: '오모이가와', prefectureId: 9, @@ -7375,6 +10577,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '思川', nameKatakana: 'オモイガワ', nameRoman: 'Omoigawa', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Omoigawa', + }, + ], nameChinese: '思川', nameKorean: '오모이가와', prefectureId: 9, @@ -7393,6 +10606,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -7406,6 +10630,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '思川', nameKatakana: 'オモイガワ', nameRoman: 'Omoigawa', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Omoigawa', + }, + ], nameChinese: '思川', nameKorean: '오모이가와', prefectureId: 9, @@ -7444,6 +10679,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'トウホクシンカンセン', nameFull: '東北新幹線', nameRoman: 'Tōhoku Shinkansen', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Tōhoku Shinkansen', + }, + ], nameChinese: '东北新干线', nameKorean: '도호쿠 신칸센', color: '#008000', @@ -7457,6 +10703,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小山', nameKatakana: 'オヤマ', nameRoman: 'Oyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Oyama', + }, + ], nameChinese: '小山', nameKorean: '오야마', prefectureId: 9, @@ -7497,6 +10754,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ウツノミヤセン', nameFull: '東北本線', nameRoman: 'Utsunomiya Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Utsunomiya Line', + }, + ], nameChinese: '宇都宫线', nameKorean: '우쓰노미야선', color: '#F68B1E', @@ -7510,6 +10778,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小山', nameKatakana: 'オヤマ', nameRoman: 'Oyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Oyama', + }, + ], nameChinese: '小山', nameKorean: '오야마', prefectureId: 9, @@ -7544,6 +10823,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'ミトセン', nameFull: '水戸線', nameRoman: 'Mito Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Mito Line', + }, + ], nameChinese: '水户线', nameKorean: '미토선', color: '#3333FF', @@ -7557,6 +10847,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小山', nameKatakana: 'オヤマ', nameRoman: 'Oyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Oyama', + }, + ], nameChinese: '小山', nameKorean: '오야마', prefectureId: 9, @@ -7591,6 +10892,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -7604,6 +10916,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小山', nameKatakana: 'オヤマ', nameRoman: 'Oyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Oyama', + }, + ], nameChinese: '小山', nameKorean: '오야마', prefectureId: 9, @@ -7638,6 +10961,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小山', nameKatakana: 'オヤマ', nameRoman: 'Oyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Oyama', + }, + ], nameChinese: '小山', nameKorean: '오야마', prefectureId: 9, @@ -7656,6 +10990,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ nameKatakana: 'リョウモウセン', nameFull: '両毛線', nameRoman: 'Ryomo Line', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Ryomo Line', + }, + ], nameChinese: '两毛线', nameKorean: '료모선', color: '#FFD400', @@ -7669,6 +11014,17 @@ export const RYOMO_LINE_STATIONS: Station[] = [ name: '小山', nameKatakana: 'オヤマ', nameRoman: 'Oyama', + nameTtsSegments: [ + { + __typename: 'TtsSegment', + alphabet: TtsAlphabet.Plain, + fallbackText: null, + lang: null, + pronunciation: null, + separator: null, + surface: 'Oyama', + }, + ], nameChinese: '小山', nameKorean: '오야마', prefectureId: 9, diff --git a/src/components/TrainTypeBoxJL.test.tsx b/src/components/TrainTypeBoxJL.test.tsx index c7bd8512c..dd2996adf 100644 --- a/src/components/TrainTypeBoxJL.test.tsx +++ b/src/components/TrainTypeBoxJL.test.tsx @@ -77,6 +77,7 @@ describe('TrainTypeBoxJL', () => { nameRoman: 'Test', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameChinese: '测试', nameKorean: '테스트', color: '#000000', diff --git a/src/components/TrainTypeBoxJO.test.tsx b/src/components/TrainTypeBoxJO.test.tsx index 80d0c5da3..39719f5c1 100644 --- a/src/components/TrainTypeBoxJO.test.tsx +++ b/src/components/TrainTypeBoxJO.test.tsx @@ -79,6 +79,7 @@ describe('TrainTypeBoxJO', () => { nameRoman: 'Test', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameChinese: '测试', nameKorean: '테스트', color: '#000000', diff --git a/src/components/TrainTypeBoxJRKyushu.test.tsx b/src/components/TrainTypeBoxJRKyushu.test.tsx index cec4987d6..5001558fe 100644 --- a/src/components/TrainTypeBoxJRKyushu.test.tsx +++ b/src/components/TrainTypeBoxJRKyushu.test.tsx @@ -54,6 +54,7 @@ describe('TrainTypeBoxJRKyushu', () => { nameRoman: 'Test', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameChinese: '测试', nameKorean: '테스트', color: '#000000', diff --git a/src/components/TrainTypeBoxSaikyo.test.tsx b/src/components/TrainTypeBoxSaikyo.test.tsx index eb821ac62..7841da8eb 100644 --- a/src/components/TrainTypeBoxSaikyo.test.tsx +++ b/src/components/TrainTypeBoxSaikyo.test.tsx @@ -54,6 +54,7 @@ describe('TrainTypeBoxSaikyo', () => { nameRoman: 'Test', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameChinese: '测试', nameKorean: '테스트', color: '#000000', diff --git a/src/hooks/useBusTTSText.ts b/src/hooks/useBusTTSText.ts index 32443ec65..d68736eb7 100644 --- a/src/hooks/useBusTTSText.ts +++ b/src/hooks/useBusTTSText.ts @@ -7,6 +7,7 @@ import stationState from '../store/atoms/station'; import { themeAtom } from '../store/atoms/theme'; import getIsPass from '../utils/isPass'; import katakanaToHiragana from '../utils/kanaToHiragana'; +import { wrapPhoneme as ph } from '../utils/phoneme'; import { useAfterNextStation } from './useAfterNextStation'; import { useBounds } from './useBounds'; import { useCurrentLine } from './useCurrentLine'; @@ -101,8 +102,9 @@ export const useBusTTSText = ( () => isLoopLine ? (loopLineBoundEn?.boundFor?.replaceAll('&', ' and ') ?? '') - : (directionalStops?.map((s) => s?.nameRoman ?? '').join(' and ') ?? - ''), + : (directionalStops + ?.map((s) => ph(s?.nameTtsSegments, s?.nameRoman)) + .join(' and ') ?? ''), [directionalStops, isLoopLine, loopLineBoundEn?.boundFor] ); @@ -521,15 +523,16 @@ export const useBusTTSText = ( const map = { [APP_THEME.TOKYO_METRO]: { - NEXT: `The next stop is ${nextStation?.nameRoman}.${ + NEXT: `The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}.${ firstSpeech ? ` This bus is on the ${ station?.line?.company?.nameEnglishShort ?? '' } bound for ${boundForEn}. ${ afterNextStation - ? `The next stop after ${nextStation?.nameRoman}${`, is ${ + ? `The next stop after ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${`, is ${ph( + afterNextStation?.nameTtsSegments, afterNextStation?.nameRoman - }${isAfterNextStopTerminus ? ' terminal' : ''}`}.` + )}${isAfterNextStopTerminus ? ' terminal' : ''}`}.` : '' }${ betweenNextStation.length @@ -538,7 +541,7 @@ export const useBusTTSText = ( }` : '' }`, - ARRIVING: `Arriving at ${nextStation?.nameRoman}${ + ARRIVING: `Arriving at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ isNextStopTerminus ? ', the last stop.' : '.' }${ isNextStopTerminus @@ -553,16 +556,17 @@ export const useBusTTSText = ( station?.line?.company?.nameEnglishShort ?? '' }. This bus is bound for ${boundForEn}. ` : '' - }The next stop is ${nextStation?.nameRoman}${ + }The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ isNextStopTerminus ? ', the last stop.' : '.' }`, - ARRIVING: `We will soon make a brief stop at ${nextStation?.nameRoman}${ + ARRIVING: `We will soon make a brief stop at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ isNextStopTerminus ? ', the last stop.' : '.' }${ afterNextStation - ? ` The stop after ${nextStation?.nameRoman}, will be ${ + ? ` The stop after ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}, will be ${ph( + afterNextStation.nameTtsSegments, afterNextStation.nameRoman - }${isAfterNextStopTerminus ? ' the last stop' : ''}.` + )}${isAfterNextStopTerminus ? ' the last stop' : ''}.` : '' }${ isNextStopTerminus @@ -575,8 +579,8 @@ export const useBusTTSText = ( firstSpeech ? `This is the ${station?.line?.company?.nameEnglishShort ?? ''} bus bound for ${boundForEn}. ` : '' - }The next stop is ${nextStation?.nameRoman}.`, - ARRIVING: `The next stop is ${nextStation?.nameRoman}${ + }The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}.`, + ARRIVING: `The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ isNextStopTerminus ? ', terminal.' : '.' }${ isNextStopTerminus @@ -594,10 +598,10 @@ export const useBusTTSText = ( firstSpeech ? `This is the ${station?.line?.company?.nameEnglishShort ?? ''} bus bound for ${boundForEn}. ` : '' - }The next stop is ${nextStation?.nameRoman}${ + }The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ isNextStopTerminus ? ', terminal.' : '.' }`, - ARRIVING: `The next stop is ${nextStation?.nameRoman}${ + ARRIVING: `The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ isNextStopTerminus ? ', terminal.' : '.' }${ isNextStopTerminus @@ -609,13 +613,15 @@ export const useBusTTSText = ( NEXT: `${ firstSpeech ? `Thank you for using ${currentLine?.company?.nameEnglishShort}. This bus is bound for ${boundForEn} ${ - viaStation ? `via ${viaStation.nameRoman}` : '' + viaStation + ? `via ${ph(viaStation.nameTtsSegments, viaStation.nameRoman)}` + : '' }. We will be stopping at ${allStops .slice(0, 5) .map((s) => s.id === selectedBound?.id && !isLoopLine - ? `${s.nameRoman} terminal` - : `${s.nameRoman}` + ? `${ph(s.nameTtsSegments, s.nameRoman)} terminal` + : `${ph(s.nameTtsSegments, s.nameRoman)}` ) .join(', ')}. ${ allStops @@ -623,24 +629,29 @@ export const useBusTTSText = ( .filter((s) => s) .reverse()[0]?.id === selectedBound?.id ? '' - : `Stops after ${ + : `Stops after ${ph( + allStops + .slice(0, 5) + .filter((s) => s) + .reverse()[0]?.nameTtsSegments, allStops .slice(0, 5) .filter((s) => s) .reverse()[0]?.nameRoman - } will be announced later. ` + )} will be announced later. ` }` : '' - }The next stop is ${nextStation?.nameRoman}${ + }The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal.' : '.' }`, - ARRIVING: `We will soon be making a brief stop at ${nextStation?.nameRoman}.${ + ARRIVING: `We will soon be making a brief stop at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}.${ afterNextStation - ? `After leaving ${ + ? `After leaving ${ph( + nextStation?.nameTtsSegments, nextStation?.nameRoman - }, We will be stopping at ${afterNextStation.nameRoman}.` + )}, We will be stopping at ${ph(afterNextStation.nameTtsSegments, afterNextStation.nameRoman)}.` : '' }`, }, @@ -649,12 +660,13 @@ export const useBusTTSText = ( firstSpeech ? `Thank you for using the ${station?.line?.company?.nameEnglishShort ?? ''}. ` : '' - }This bus is bound for ${boundForEn}. The next stop is ${nextStation?.nameRoman}.`, - ARRIVING: `We will soon be arriving at ${nextStation?.nameRoman}.${ + }This bus is bound for ${boundForEn}. The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}.`, + ARRIVING: `We will soon be arriving at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}.${ afterNextStation - ? ` The stop after ${nextStation?.nameRoman}, will be ${ + ? ` The stop after ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}, will be ${ph( + afterNextStation.nameTtsSegments, afterNextStation.nameRoman - }${isAfterNextStopTerminus ? ' the last stop' : ''}.` + )}${isAfterNextStopTerminus ? ' the last stop' : ''}.` : '' }${ isNextStopTerminus @@ -667,12 +679,12 @@ export const useBusTTSText = ( ARRIVING: '', }, [APP_THEME.JR_KYUSHU]: { - NEXT: `${firstSpeech ? `This bus is bound for ${boundForEn}.` : ''} The next stop is ${nextStation?.nameRoman}${ + NEXT: `${firstSpeech ? `This bus is bound for ${boundForEn}.` : ''} The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal.' : '.' }`, - ARRIVING: `We will soon be arriving at ${nextStation?.nameRoman}${ + ARRIVING: `We will soon be arriving at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal.' : '.' @@ -696,10 +708,11 @@ export const useBusTTSText = ( isNextStopTerminus, nextStation?.groupId, selectedBound?.groupId, - nextStation?.nameRoman, + nextStation?.nameTtsSegments, selectedBound, viaStation, station?.line?.company?.nameEnglishShort, + nextStation?.nameRoman, ]); const resolved = resolveTemplateTheme(theme); diff --git a/src/hooks/useCurrentTrainType.test.tsx b/src/hooks/useCurrentTrainType.test.tsx index 5be1ac455..c68b5eb9a 100644 --- a/src/hooks/useCurrentTrainType.test.tsx +++ b/src/hooks/useCurrentTrainType.test.tsx @@ -69,6 +69,7 @@ const createTrainType = ( nameIpa: null, nameRomanIpa: null, nameRoman: 'Local', + nameTtsSegments: null, typeId: TRAIN_TYPE_IDS.LOCAL, ...overrides, }); diff --git a/src/hooks/useGetStationsWithTermination.test.tsx b/src/hooks/useGetStationsWithTermination.test.tsx index 7a362cb12..ca9a774a2 100644 --- a/src/hooks/useGetStationsWithTermination.test.tsx +++ b/src/hooks/useGetStationsWithTermination.test.tsx @@ -25,6 +25,7 @@ const mkStation = (groupId: number, id: number = groupId): StationType => ({ nameChinese: undefined, nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameKorean: undefined, threeLetterCode: undefined, lines: [], diff --git a/src/hooks/useRefreshStation.test.tsx b/src/hooks/useRefreshStation.test.tsx index 30dca1f82..701c92f90 100644 --- a/src/hooks/useRefreshStation.test.tsx +++ b/src/hooks/useRefreshStation.test.tsx @@ -36,6 +36,7 @@ const mockStation: Station = { nameChinese: undefined, nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameKorean: undefined, threeLetterCode: undefined, latitude: 35.0, diff --git a/src/hooks/useTTSText.ts b/src/hooks/useTTSText.ts index 92517dfad..33ae14698 100644 --- a/src/hooks/useTTSText.ts +++ b/src/hooks/useTTSText.ts @@ -106,9 +106,11 @@ export const useTTSText = ( name: string | undefined | null, nameKatakana: string | undefined | null ) => - !name || !nameKatakana + !name && !nameKatakana ? `各駅停車` - : `${name}`, + : !nameKatakana + ? (name ?? '') + : `${name}`, [] ); @@ -127,6 +129,12 @@ export const useTTSText = ( parenthesisRegexp, '' ), + nameTtsSegments: currentTrainTypeOrigin.nameTtsSegments?.map((seg) => ({ + ...seg, + surface: seg.surface?.replace(parenthesisRegexp, '') ?? null, + fallbackText: + seg.fallbackText?.replace(parenthesisRegexp, '') ?? null, + })), }, [currentTrainTypeOrigin] ); @@ -169,7 +177,7 @@ export const useTTSText = ( isLoopLine ? (loopLineBoundEn?.boundFor?.replaceAll('&', ' and ') ?? '') : (directionalStops - ?.map((s) => ph(s?.nameRoman, s?.nameRomanIpa)) + ?.map((s) => ph(s?.nameTtsSegments, s?.nameRoman)) .join(' and ') ?? ''), [directionalStops, isLoopLine, loopLineBoundEn?.boundFor] @@ -766,7 +774,6 @@ export const useTTSText = ( isLoopLine, isNextStopTerminus, nextStation?.name, - nextStation?.nameKatakana, replaceJapaneseText, selectedBound, transferLines, @@ -774,6 +781,7 @@ export const useTTSText = ( yamanoteTrainTypeJa, nextStation?.groupId, selectedBound?.groupId, + nextStation?.nameKatakana, ]); const englishTemplate: Record | null = @@ -784,15 +792,15 @@ export const useTTSText = ( const map = { [APP_THEME.TOKYO_METRO]: { - NEXT: `The next stop is ${ph(nextStation?.nameRoman, nextStation?.nameRomanIpa)}${ + NEXT: `The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ nextStationNumberText.length ? ` ${nextStationNumberText}` : '.' }${ transferLines.length ? ` Please change here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '.' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '.' : ','}` ) .join(' ')}` : '' @@ -802,19 +810,13 @@ export const useTTSText = ( yamanoteTrainTypeEn ?? (currentTrainType ? ph( - currentTrainType.nameRoman, - currentTrainType.nameRomanIpa + currentTrainType.nameTtsSegments, + currentTrainType.nameRoman ) : 'Local') - } Service on the ${ph( - currentLine.nameRoman, - currentLine.nameRomanIpa - )} bound for ${boundForEn}. ${ + } Service on the ${ph(currentLine.nameTtsSegments, currentLine.nameRoman)} bound for ${boundForEn}. ${ currentTrainType && afterNextStation - ? `The next stop after ${ph(nextStation?.nameRoman, nextStation?.nameRomanIpa)}${`, is ${ph( - afterNextStation?.nameRoman, - afterNextStation?.nameRomanIpa - )}${isAfterNextStopTerminus ? ' terminal' : ''}`}.` + ? `The next stop after ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${`, is ${ph(afterNextStation?.nameTtsSegments, afterNextStation?.nameRoman)}${isAfterNextStopTerminus ? ' terminal' : ''}`}.` : '' }${ betweenNextStation.length @@ -823,114 +825,93 @@ export const useTTSText = ( }` : '' }`, - ARRIVING: `Arriving at ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText}${ + ARRIVING: `Arriving at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText}${ isNextStopTerminus ? ', the last stop.' : '' } ${ transferLines.length ? `Please change here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '' : ','}` ) .join(' ')}` : '' }. ${ isNextStopTerminus - ? `Thank you for using the ${ph(currentLine?.nameRoman, currentLine?.nameRomanIpa)}.` + ? `Thank you for using the ${ph(currentLine?.nameTtsSegments, currentLine?.nameRoman)}.` : '' }`, }, [APP_THEME.TY]: { NEXT: `${ firstSpeech - ? `Thank you for using the ${ph( - currentLine.nameRoman, - currentLine.nameRomanIpa - )}. This is the ${yamanoteTrainTypeEn ?? (ph(currentTrainType?.nameRoman, currentTrainType?.nameRomanIpa) || 'Local')} train ${ - connectedLines[0]?.nameRoman - ? `on the ${ph(connectedLines[0]?.nameRoman, connectedLines[0]?.nameRomanIpa)}` + ? `Thank you for using the ${ph(currentLine.nameTtsSegments, currentLine.nameRoman)}. This is the ${yamanoteTrainTypeEn ?? (ph(currentTrainType?.nameTtsSegments, currentTrainType?.nameRoman) || 'Local')} train ${ + connectedLines[0]?.nameTtsSegments?.length + ? `on the ${ph(connectedLines[0]?.nameTtsSegments, connectedLines[0]?.nameRoman)}` : '' } to ${boundForEn}. ` : '' - }The next station is ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText}${ + }The next station is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText}${ isNextStopTerminus ? ', the last stop' : '' } ${ transferLines.length ? `Passengers changing to ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}` ) .join(', ')}, Please transfer at this station.` : '' }`, - ARRIVING: `We will soon make a brief stop at ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText}${ + ARRIVING: `We will soon make a brief stop at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText}${ isNextStopTerminus ? ', the last stop' : '' }${ transferLines.length ? ` Passengers changing to ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}` ) .join(', ')}, Please transfer at this station.` : '' }${ currentTrainType && afterNextStation - ? ` The stop after ${ph(nextStation?.nameRoman, nextStation?.nameRomanIpa)}, will be ${ph( - afterNextStation.nameRoman, - afterNextStation.nameRomanIpa - )}${isAfterNextStopTerminus ? ' the last stop' : ''}.` + ? ` The stop after ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}, will be ${ph(afterNextStation.nameTtsSegments, afterNextStation.nameRoman)}${isAfterNextStopTerminus ? ' the last stop' : ''}.` : '' }${ isNextStopTerminus - ? ` Thank you for using the ${ph(currentLine?.nameRoman, currentLine?.nameRomanIpa)}.` + ? ` Thank you for using the ${ph(currentLine?.nameTtsSegments, currentLine?.nameRoman)}.` : '' }`, }, [APP_THEME.YAMANOTE]: { NEXT: `${ firstSpeech - ? `This is the ${ph(currentLine.nameRoman, currentLine.nameRomanIpa)} train bound for ${boundForEn}. ` + ? `This is the ${ph(currentLine.nameTtsSegments, currentLine.nameRoman)} train bound for ${boundForEn}. ` : '' - }The next station is ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText} ${ + }The next station is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText} ${ transferLines.length ? `Please change here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '' : ','}` ) .join(' ')}` : '' }`, - ARRIVING: `The next station is ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText}${ + ARRIVING: `The next station is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText}${ isNextStopTerminus ? ', terminal.' : '' } ${ transferLines.length ? `Please change here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '' : ','}` ) .join(' ')}` : '' @@ -948,34 +929,28 @@ export const useTTSText = ( [APP_THEME.SAIKYO]: { NEXT: `${ firstSpeech - ? `This is the ${ph(currentLine.nameRoman, currentLine.nameRomanIpa)} train bound for ${boundForEn}. ` + ? `This is the ${ph(currentLine.nameTtsSegments, currentLine.nameRoman)} train bound for ${boundForEn}. ` : '' - }The next station is ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText}${isNextStopTerminus ? ', terminal' : ''} ${ + }The next station is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText}${isNextStopTerminus ? ', terminal' : ''} ${ transferLines.length ? `Please change here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '' : ','}` ) .join(' ')}` : '' }`, - ARRIVING: `The next station is ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText}${ + ARRIVING: `The next station is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText}${ isNextStopTerminus ? ', terminal.' : '' } ${ transferLines.length ? `Please change here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '' : ','}` ) .join(' ')}` : '' @@ -988,16 +963,16 @@ export const useTTSText = ( [APP_THEME.JR_WEST]: { NEXT: `${ firstSpeech - ? `Thank you for using ${currentLine?.company?.nameEnglishShort}. This is the ${yamanoteTrainTypeEn ?? (ph(currentTrainType?.nameRoman, currentTrainType?.nameRomanIpa) || 'Local')} Service bound for ${boundForEn} ${ + ? `Thank you for using ${currentLine?.company?.nameEnglishShort}. This is the ${yamanoteTrainTypeEn ?? (ph(currentTrainType?.nameTtsSegments, currentTrainType?.nameRoman) || 'Local')} Service bound for ${boundForEn} ${ viaStation - ? `via ${ph(viaStation.nameRoman, viaStation.nameRomanIpa)}` + ? `via ${ph(viaStation.nameTtsSegments, viaStation.nameRoman)}` : '' }. We will be stopping at ${allStops .slice(0, 5) .map((s) => s.id === selectedBound?.id && !isLoopLine - ? `${ph(s.nameRoman, s.nameRomanIpa)} terminal` - : `${ph(s.nameRoman, s.nameRomanIpa)}` + ? `${ph(s.nameTtsSegments, s.nameRoman)} terminal` + : `${ph(s.nameTtsSegments, s.nameRoman)}` ) .join(', ')}. ${ allStops @@ -1009,15 +984,15 @@ export const useTTSText = ( allStops .slice(0, 5) .filter((s) => s) - .reverse()[0]?.nameRoman, + .reverse()[0]?.nameTtsSegments, allStops .slice(0, 5) .filter((s) => s) - .reverse()[0]?.nameRomanIpa + .reverse()[0]?.nameRoman )} will be announced later. ` }` : '' - }The next stop is ${ph(nextStation?.nameRoman, nextStation?.nameRomanIpa)}${nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal' : ''}${ + }The next stop is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal' : ''}${ nextStationNumber?.lineSymbol?.length ? ` station number ${nextStationNumberText.replace(/\.$/, '')}.` : '.' @@ -1026,16 +1001,13 @@ export const useTTSText = ( ? `Transfer here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '.' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '.' : ','}` ) .join(' ')}` : '' }`, - ARRIVING: `We will soon be making a brief stop at ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )}${ + ARRIVING: `We will soon be making a brief stop at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${ nextStationNumber?.lineSymbol?.length ? ` station number ${nextStationNumberText.replace(/\.$/, '')}.` : '.' @@ -1044,62 +1016,50 @@ export const useTTSText = ( ? `Transfer here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '.' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '.' : ','}` ) .join(' ')}` : '' } ${ afterNextStation - ? `After leaving ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )}, We will be stopping at ${ph(afterNextStation.nameRoman, afterNextStation.nameRomanIpa)}.` + ? `After leaving ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}, We will be stopping at ${ph(afterNextStation.nameTtsSegments, afterNextStation.nameRoman)}.` : '' }`, }, [APP_THEME.TOEI]: { NEXT: `${ firstSpeech - ? `Thank you for using the ${ph(currentLine.nameRoman, currentLine.nameRomanIpa)}. ` + ? `Thank you for using the ${ph(currentLine.nameTtsSegments, currentLine.nameRoman)}. ` : '' - }This is the ${yamanoteTrainTypeEn ?? (ph(currentTrainType?.nameRoman, currentTrainType?.nameRomanIpa) || 'Local')} train bound for ${boundForEn}. The next station is ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText} ${ + }This is the ${yamanoteTrainTypeEn ?? (ph(currentTrainType?.nameTtsSegments, currentTrainType?.nameRoman) || 'Local')} train bound for ${boundForEn}. The next station is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText} ${ transferLines.length ? `Please change here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '.' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '.' : ','}` ) .join(' ')}` : '' }`, - ARRIVING: `We will soon be arriving at ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText} ${ + ARRIVING: `We will soon be arriving at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText} ${ transferLines.length ? `Please change here for ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '.' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '.' : ','}` ) .join(' ')}` : '' }${ currentTrainType && afterNextStation - ? ` The stop after ${ph(nextStation?.nameRoman, nextStation?.nameRomanIpa)}, will be ${ph( - afterNextStation.nameRoman, - afterNextStation.nameRomanIpa - )}${isAfterNextStopTerminus ? ' the last stop' : ''}.` + ? ` The stop after ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}, will be ${ph(afterNextStation.nameTtsSegments, afterNextStation.nameRoman)}${isAfterNextStopTerminus ? ' the last stop' : ''}.` : '' }${ isNextStopTerminus - ? ` Thank you for using the ${ph(currentLine?.nameRoman, currentLine?.nameRomanIpa)}.` + ? ` Thank you for using the ${ph(currentLine?.nameTtsSegments, currentLine?.nameRoman)}.` : '' }`, }, @@ -1108,36 +1068,30 @@ export const useTTSText = ( ARRIVING: '', }, [APP_THEME.JR_KYUSHU]: { - NEXT: `${firstSpeech ? `This is a ${yamanoteTrainTypeEn ?? (ph(currentTrainType?.nameRoman, currentTrainType?.nameRomanIpa) || 'Local')} train bound for ${boundForEn}.` : ''} The next station is ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )} ${nextStationNumberText}${nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal' : ''}. ${ + NEXT: `${firstSpeech ? `This is a ${yamanoteTrainTypeEn ?? (ph(currentTrainType?.nameTtsSegments, currentTrainType?.nameRoman) || 'Local')} train bound for ${boundForEn}.` : ''} The next station is ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)} ${nextStationNumberText}${nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal' : ''}. ${ transferLines.length ? `You can transfer to ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '' : ','}` ) .join( ' ' - )} at ${ph(nextStation?.nameRoman, nextStation?.nameRomanIpa)}.` + )} at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}.` : '' }`, - ARRIVING: `We will soon be arriving at ${ph( - nextStation?.nameRoman, - nextStation?.nameRomanIpa - )}${nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal' : ''} ${nextStationNumberText}. ${ + ARRIVING: `We will soon be arriving at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}${nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? ' terminal' : ''} ${nextStationNumberText}. ${ transferLines.length ? `You can transfer to ${transferLines .map((l, i, a) => a.length > 1 && a.length - 1 === i - ? `and the ${ph(l.nameRoman, l.nameRomanIpa)}.` - : `the ${ph(l.nameRoman, l.nameRomanIpa)}${a.length === 1 ? '' : ','}` + ? `and the ${ph(l.nameTtsSegments, l.nameRoman)}.` + : `the ${ph(l.nameTtsSegments, l.nameRoman)}${a.length === 1 ? '' : ','}` ) .join( ' ' - )} at ${ph(nextStation?.nameRoman, nextStation?.nameRomanIpa)}. ${nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? `Thank you for using the ${ph(currentLine.nameRoman, currentLine.nameRomanIpa)}.` : ''}` + )} at ${ph(nextStation?.nameTtsSegments, nextStation?.nameRoman)}. ${nextStation?.groupId === selectedBound?.groupId && !isLoopLine ? `Thank you for using the ${ph(currentLine.nameTtsSegments, currentLine.nameRoman)}.` : ''}` : '' }`, }, @@ -1157,14 +1111,14 @@ export const useTTSText = ( isNextStopTerminus, nextStation?.groupId, selectedBound?.groupId, - nextStation?.nameRoman, - nextStation?.nameRomanIpa, + nextStation?.nameTtsSegments, nextStationNumber?.lineSymbol?.length, nextStationNumberText, selectedBound, transferLines, viaStation, yamanoteTrainTypeEn, + nextStation?.nameRoman, ]); const resolved = resolveTemplateTheme(theme); diff --git a/src/hooks/useTransferLinesFromStation.test.tsx b/src/hooks/useTransferLinesFromStation.test.tsx index fcd7ffc71..d577e7666 100644 --- a/src/hooks/useTransferLinesFromStation.test.tsx +++ b/src/hooks/useTransferLinesFromStation.test.tsx @@ -39,6 +39,7 @@ const createLineNested = (overrides: Partial = {}): LineNested => ({ nameFull: 'Line', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameKatakana: 'ライン', nameKorean: '라인', nameRoman: 'Line', diff --git a/src/lib/graphql/queries.ts b/src/lib/graphql/queries.ts index 00a99327b..ea93a5191 100644 --- a/src/lib/graphql/queries.ts +++ b/src/lib/graphql/queries.ts @@ -34,7 +34,19 @@ export const STATION_NUMBER_FRAGMENT = gql` } `; +export const TTS_SEGMENT_FRAGMENT = gql` + fragment TtsSegmentFields on TtsSegment { + alphabet + fallbackText + lang + pronunciation + separator + surface + } +`; + export const TINY_TRAIN_TYPE_FRAGMENT = gql` + ${TTS_SEGMENT_FRAGMENT} fragment TinyTrainTypeFields on TrainTypeNested { id typeId @@ -45,6 +57,9 @@ export const TINY_TRAIN_TYPE_FRAGMENT = gql` nameRomanIpa nameChinese nameKorean + nameTtsSegments { + ...TtsSegmentFields + } color direction kind @@ -71,10 +86,13 @@ export const LINE_NESTED_FRAGMENT = gql` groupId name nameRoman - nameRomanIpa + nameRomanIpa nameChinese nameKorean hasTrainTypes + nameTtsSegments { + ...TtsSegmentFields + } stationNumbers { ...StationNumberFields } @@ -90,6 +108,9 @@ export const LINE_NESTED_FRAGMENT = gql` nameShort nameChinese nameKorean + nameTtsSegments { + ...TtsSegmentFields + } status transportType } @@ -107,6 +128,9 @@ export const TRAIN_TYPE_NESTED_FRAGMENT = gql` nameRomanIpa nameChinese nameKorean + nameTtsSegments { + ...TtsSegmentFields + } color direction kind @@ -132,6 +156,9 @@ export const STATION_FRAGMENT = gql` nameRomanIpa nameChinese nameKorean + nameTtsSegments { + ...TtsSegmentFields + } threeLetterCode latitude longitude diff --git a/src/utils/__fixtures__/search.ts b/src/utils/__fixtures__/search.ts index f300cd7cd..a5d9ef0bb 100644 --- a/src/utils/__fixtures__/search.ts +++ b/src/utils/__fixtures__/search.ts @@ -25,6 +25,7 @@ export const AMAGASAKI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '아마가사키', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -35,6 +36,7 @@ export const AMAGASAKI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '東海道本線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'JR Kobe Line', nameChinese: 'JR神户线', nameKorean: 'JR 고베선', @@ -88,6 +90,7 @@ export const AMAGASAKI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '아마가사키', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -98,6 +101,7 @@ export const AMAGASAKI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '阪神本線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Hanshin Main Line', nameChinese: undefined, nameKorean: undefined, @@ -151,6 +155,7 @@ export const AMAGASAKI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '아마가사키 센터풀마에', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -161,6 +166,7 @@ export const AMAGASAKI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '阪神本線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Hanshin Main Line', nameChinese: undefined, nameKorean: undefined, @@ -217,6 +223,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '오치아이', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -227,6 +234,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '根室本線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Nemuro Main Line', nameChinese: undefined, nameKorean: undefined, @@ -280,6 +288,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '리쿠젠오치아이', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -290,6 +299,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '仙石線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Senseki Line', nameChinese: undefined, nameKorean: undefined, @@ -343,6 +353,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '오치아이가와', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -353,6 +364,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '多摩都市モノレール線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Tama Toshi Monorail Line', nameChinese: undefined, nameKorean: undefined, @@ -406,6 +418,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '미마사카오치아이', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -416,6 +429,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '姫新線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Kishin Line', nameChinese: undefined, nameKorean: undefined, @@ -469,6 +483,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '빙고오치아이', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -479,6 +494,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '芸備線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Geibi Line', nameChinese: undefined, nameKorean: undefined, @@ -532,6 +548,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '시모오치아이', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -542,6 +559,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '西武新宿線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Seibu Shinjuku Line', nameChinese: undefined, nameKorean: undefined, @@ -595,6 +613,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '오치아이', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -605,6 +624,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '東京メトロ東西線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Tokyo Metro Tozai Line', nameChinese: undefined, nameKorean: undefined, @@ -658,6 +678,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameKorean: '오치아이미나미나가사키', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, threeLetterCode: undefined, lines: [], line: { @@ -668,6 +689,7 @@ export const OCHIAI_STATIONS_FROM_SEARCH: Station[] = [ nameFull: '都営地下鉄大江戸線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Toei Oedo Line', nameChinese: undefined, nameKorean: undefined, diff --git a/src/utils/jr.ts b/src/utils/jr.ts index d55812445..2f8fdd68c 100644 --- a/src/utils/jr.ts +++ b/src/utils/jr.ts @@ -50,6 +50,7 @@ const omitJRLinesIfThresholdExceeded = (lines: Line[]): Line[] => { nameFull: 'JR線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameKatakana: 'JRセン', nameKorean: 'JR선', nameRoman: 'JR Lines', @@ -100,6 +101,7 @@ const omitJRLinesIfThresholdExceeded = (lines: Line[]): Line[] => { nameFull: '新幹線', nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, status: undefined, averageDistance: undefined, station: undefined, diff --git a/src/utils/phoneme.ts b/src/utils/phoneme.ts index e2756ad58..d3fae9a4a 100644 --- a/src/utils/phoneme.ts +++ b/src/utils/phoneme.ts @@ -1,15 +1,87 @@ +import { TtsAlphabet, type TtsSegment } from '~/@types/graphql'; + const escapeXml = (s: string): string => s.replace(/&/g, '&').replace(//g, '>'); const escapeXmlAttr = (s: string): string => escapeXml(s).replace(/"/g, '"').replace(/'/g, '''); -/** nameRomanIpa が定義されていれば SSML phoneme タグで囲み、なければ nameRoman をそのまま返す */ +type IpaGroup = { + kind: 'ipa'; + pronunciations: string[]; + fallbacks: string[]; + separators: string[]; + trailingSeparator: string; +}; + +type PlainGroup = { + kind: 'plain'; + text: string; +}; + +type SegmentGroup = IpaGroup | PlainGroup; + +/** 連続する同種セグメントをグループ化する */ +const groupSegments = (segments: TtsSegment[]): SegmentGroup[] => { + const groups: SegmentGroup[] = []; + + for (const seg of segments) { + const isIpa = seg.alphabet === TtsAlphabet.Ipa && seg.pronunciation; + const separator = seg.separator ?? ''; + + if (isIpa) { + const last = groups[groups.length - 1]; + if (last?.kind === 'ipa') { + // 直前のグループの末尾 separator を結合用に取り込む + last.separators.push(last.trailingSeparator); + last.pronunciations.push(seg.pronunciation ?? ''); + last.fallbacks.push(seg.fallbackText ?? seg.surface ?? ''); + last.trailingSeparator = separator; + } else { + groups.push({ + kind: 'ipa', + pronunciations: [seg.pronunciation ?? ''], + fallbacks: [seg.fallbackText ?? seg.surface ?? ''], + separators: [], + trailingSeparator: separator, + }); + } + } else { + const text = seg.surface ?? seg.fallbackText ?? ''; + groups.push({ kind: 'plain', text: text + separator }); + } + } + + return groups; +}; + +/** TtsSegment 配列を SSML 文字列に変換する。連続する IPA セグメントは単一の phoneme タグに結合する。segments が空の場合は fallback を返す */ export const wrapPhoneme = ( - nameRoman: string | null | undefined, - nameRomanIpa?: string | null | undefined + segments: TtsSegment[] | null | undefined, + fallback?: string | null ): string => { - if (!nameRoman) return ''; - if (!nameRomanIpa) return escapeXml(nameRoman); - return `${escapeXml(nameRoman)}`; + if (!segments?.length) return fallback ? escapeXml(fallback) : ''; + + return groupSegments(segments) + .map((group) => { + if (group.kind === 'ipa') { + const ph = group.pronunciations + .reduce((acc, p, i) => { + if (i > 0) acc.push(group.separators[i - 1] ?? ''); + acc.push(p); + return acc; + }, []) + .join(''); + const inner = group.fallbacks + .reduce((acc, f, i) => { + if (i > 0) acc.push(group.separators[i - 1] ?? ''); + acc.push(f); + return acc; + }, []) + .join(''); + return `${escapeXml(inner)}${escapeXml(group.trailingSeparator)}`; + } + return escapeXml(group.text); + }) + .join(''); }; diff --git a/src/utils/test/factories.ts b/src/utils/test/factories.ts index 4ec506a8f..bc97573d2 100644 --- a/src/utils/test/factories.ts +++ b/src/utils/test/factories.ts @@ -49,6 +49,7 @@ export const createStation = ( nameKorean: null, nameRoman: 'Test Line', nameShort: 'Test', + nameTtsSegments: null, station: null, status: OperationStatus.InOperation, trainType: null, @@ -63,6 +64,7 @@ export const createStation = ( nameKatakana: `ステーション${id}`, nameKorean: null, nameRoman: `Station${id}`, + nameTtsSegments: null, openedAt: null, postalCode: null, prefectureId: null, @@ -95,6 +97,7 @@ export const createLine = ( nameKorean: null, nameRoman: 'Test Line', nameShort: 'Test', + nameTtsSegments: null, station: null, status: OperationStatus.InOperation, trainType: null, diff --git a/src/utils/trainTypeString.test.ts b/src/utils/trainTypeString.test.ts index 8a25be570..ea17e8380 100644 --- a/src/utils/trainTypeString.test.ts +++ b/src/utils/trainTypeString.test.ts @@ -25,6 +25,7 @@ const createTrainType = (kind: TrainTypeKind | null): TrainType => ({ nameKorean: null, nameIpa: null, nameRomanIpa: null, + nameTtsSegments: null, nameRoman: 'Test Type', typeId: 1, });