@@ -7,7 +7,7 @@ import { type SongLyric } from "@/types/lyric";
77import { isElectron } from "@/utils/env" ;
88import { stripLyricMetadata } from "@/utils/lyricStripper" ;
99import { type LyricLine , parseLrc , parseTTML , parseYrc } from "@applemusic-like-lyrics/lyric" ;
10- import { parseSmartLrc , isWordLevelFormat } from "@/utils/lyricParser" ;
10+ import { isWordLevelFormat , parseSmartLrc } from "@/utils/lyricParser" ;
1111import { escapeRegExp , isEmpty } from "lodash-es" ;
1212import { SongType } from "@/types/main" ;
1313
@@ -323,29 +323,21 @@ class LyricManager {
323323 } ;
324324 // 解析主歌词
325325 const qrcLines = parseQRCContent ( qrcContent ) ;
326- // 解析罗马音(如果有)
327- const romaLines = roma ? parseQRCContent ( roma ) : [ ] ;
328- // 构建 LyricLine 数组,同时填充 romanWord
329- const lines : LyricLine [ ] = qrcLines . map ( ( qrcLine , lineIndex ) => {
330- // 找到对应的罗马音行
331- const romaLine = romaLines [ lineIndex ] ;
332- // 按索引填充 romanWord
333- const words = qrcLine . words . map ( ( w , wordIndex ) => ( {
334- ...w ,
335- romanWord : romaLine ?. words [ wordIndex ] ?. word || "" ,
336- } ) ) ;
326+ let result = qrcLines . map ( ( qrcLine ) => {
337327 return {
338- words,
328+ words : qrcLine . words . map ( ( word ) => ( {
329+ ...word ,
330+ romanWord : "" ,
331+ } ) ) ,
339332 startTime : qrcLine . startTime ,
340333 endTime : qrcLine . endTime ,
341334 translatedLyric : "" ,
342- romanLyric : romaLine ?. words . map ( ( w ) => w . word ) . join ( "" ) || "" ,
335+ romanLyric : "" ,
343336 isBG : false ,
344337 isDuet : false ,
345338 } ;
346339 } ) ;
347340 // 处理翻译
348- let result = lines ;
349341 if ( trans ) {
350342 let transLines = parseLrc ( trans ) ;
351343 if ( transLines ?. length ) {
@@ -357,6 +349,31 @@ class LyricManager {
357349 result = this . alignLyrics ( result , transLines , "translatedLyric" ) ;
358350 }
359351 }
352+ // 处理音译
353+ if ( roma ) {
354+ const qrcRomaLines = parseQRCContent ( roma ) ;
355+ if ( qrcRomaLines ?. length ) {
356+ const romaLines = qrcRomaLines . map ( ( line ) => {
357+ return {
358+ words : [
359+ {
360+ startTime : line . startTime ,
361+ endTime : line . endTime ,
362+ word : line . words . map ( ( w ) => w . word ) . join ( "" ) ,
363+ romanWord : "" ,
364+ } ,
365+ ] ,
366+ startTime : line . startTime ,
367+ endTime : line . endTime ,
368+ translatedLyric : "" ,
369+ romanLyric : "" ,
370+ isBG : false ,
371+ isDuet : false ,
372+ } ;
373+ } ) ;
374+ result = this . alignLyrics ( result , romaLines , "romanLyric" ) ;
375+ }
376+ }
360377 return result ;
361378 }
362379
0 commit comments