feat: 添加音频

This commit is contained in:
zyronon
2025-05-20 03:34:39 +08:00
parent 6772cb7dac
commit 4146a6e5eb
199 changed files with 2097 additions and 746 deletions

View File

@@ -79,7 +79,7 @@ export function splitEnArticle(text: string): { sections: Sentence[][], newText:
// text: '',
translate: '',
words: [],
audioPosition: [],
audioPosition: [0, 0],
})
section.push(sentence)
@@ -215,7 +215,7 @@ export function splitEnArticle(text: string): { sections: Sentence[][], newText:
let post: string = v.post
//判断是不是等于空,因为正常的词后面都会有个空格。这种不需要处理。
if (post && post !== ' ') {
checkSymbol(post)
checkSymbol(post.trim())
}
}
})
@@ -258,33 +258,34 @@ export function splitCNArticle(text: string): Sentence[][] {
//去除头和尾部的空格
text = text.trim()
let sections: Sentence[][] = []
text && text.split('\n').map((rowSection, i) => {
text && text.split('\n\n').map((rowSection, i) => {
let section: Sentence[] = []
sections.push(section)
rowSection = rowSection.trim()
let sentences = split(rowSection)
sentences.map(sentenceRow => {
let row = sentenceRow.raw
let sentence: Sentence = {
text: row,
// text: '',
translate: '',
words: []
}
section.push(sentence)
// console.log('LICENSE', )
if (row) {
//这个库总是会把反引号给断句到下一行
if (row[0] === "”") {
sentence.text = row.substr(1)
let lastSentence = section[section.length - 2]
lastSentence.text += "”"
if (!sentence.text) {
section.pop()
let list = rowSection.trim().split('\n')
list.map(sentenceText => {
let sentences = split(sentenceText)
sentences.map(sentenceRow => {
let row = sentenceRow.raw
let sentence: Sentence = {
text: row,
translate: '',
words: [],
audioPosition: [0, 0],
}
section.push(sentence)
if (row) {
//这个库总是会把反引号给断句到下一行
if (row[0] === "”") {
sentence.text = row.substr(1)
let lastSentence = section[section.length - 2]
lastSentence.text += "”"
if (!sentence.text) {
section.pop()
}
}
}
}
// console.log('sentence', sentenceRow)
// console.log('sentence', sentenceRow)
})
})
})
// console.log('sections', sections)
@@ -297,12 +298,12 @@ export function getSplitTranslateText(article: string) {
if (sections.length) {
sections.map((sectionItem) => {
sectionItem.map((sentenceItem) => {
str += sentenceItem.text + '\n'
str += sentenceItem.text + (sentenceItem.text.endsWith("\n") ? '' : '\n')
})
str += '\n'
str += str.endsWith("\n\n") ? '' : '\n'
})
}
return str
return str.trim()
}
export function isArticle(type: DictType): boolean {
@@ -312,16 +313,8 @@ export function isArticle(type: DictType): boolean {
}
export function getTranslateText(article: Article) {
if (article.useTranslateType === TranslateType.custom) {
return article.textCustomTranslate
.split('\n\n').filter(v => v)
} else if (article.useTranslateType === TranslateType.network) {
return article.textNetworkTranslate
.split('\n\n').filter(v => v)
} else {
return []
}
return article.textTranslate
.split('\n\n').filter(v => v)
}
export function usePlaySentenceAudio() {

View File

@@ -42,7 +42,7 @@ export function getSentenceAllTranslateText(article: Article) {
})
str += '\n'
})
return str
return str.trim()
}
export function getSentenceAllText(article: Article) {
@@ -100,7 +100,7 @@ export async function getNetworkTranslate(
sentence.translate = r.trans.paragraphs[0]
if (!allShow) {
//一次显示所有,顺序会乱
article.textCustomTranslate += sentence.translate + '\n'
article.textTranslate += sentence.translate + '\n'
}
}
return Promise.resolve(cb)
@@ -178,7 +178,7 @@ export async function getNetworkTranslate(
retryCount++
} while (promiseList.length)
cbs.map(v => v())
article.textCustomTranslate = getSentenceAllTranslateText(article)
article.textTranslate = getSentenceAllTranslateText(article)
if (progressCb) {
clearInterval(timer)
@@ -188,7 +188,7 @@ export async function getNetworkTranslate(
resolve(true)
})
} else {
article.textCustomTranslate = getSentenceAllTranslateText(article)
article.textTranslate = getSentenceAllTranslateText(article)
}
}
}
@@ -197,10 +197,12 @@ export function renewSectionTexts(article: Article) {
let {newText, sections} = splitEnArticle(article.text)
article.text = newText
article.sections = sections
let count = 0
if (article.lrcPosition.length) {
article.sections.map((v, i) => {
v.map((w, j) => {
w.audioPosition = article.lrcPosition[(i * (article.sections[i - 1]||[]).length) + j]
w.audioPosition = article.lrcPosition[count]
count++
})
})
}