|
@@ -235,30 +235,65 @@
|
|
|
<el-input v-model="noticeInput" placeholder="输入语境" style="width: 500px" />
|
|
<el-input v-model="noticeInput" placeholder="输入语境" style="width: 500px" />
|
|
|
<el-button type="primary" size="small" @click="handleNotice">插入语境</el-button>
|
|
<el-button type="primary" size="small" @click="handleNotice">插入语境</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="btn-box">
|
|
|
|
|
- <SelectUpload label="课文音频" type="audio" @uploadSuccess="uploadAudioSuccess" />
|
|
|
|
|
- <el-button :loading="autoLoading" @click="handleAutoAudio">自动生成音频</el-button>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div v-if="data.mp3_list.length > 0" class="upload-file">
|
|
|
|
|
- <div class="file-name">
|
|
|
|
|
- <span>
|
|
|
|
|
- <SvgIcon icon-class="note" size="12" />
|
|
|
|
|
- <span>{{ data.mp3_list[0].name }}</span>
|
|
|
|
|
- </span>
|
|
|
|
|
|
|
+ <span class="tips">输入课文文本后,请先点击生成分词</span>
|
|
|
|
|
+ <el-button type="primary" @click="handleChangeContent">生成分词</el-button>
|
|
|
|
|
+ <template v-if="data.isFenci">
|
|
|
|
|
+ <div class="new-btn-box">
|
|
|
|
|
+ <p>文本内容</p>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <a @click="checkArticle">分词和拼音</a>
|
|
|
|
|
+ <a @click="editWordsFlag = !editWordsFlag">生词和气泡</a>
|
|
|
|
|
+ <a @click="handleMultilingual">多语种翻译</a>
|
|
|
|
|
+ <MultilingualFill
|
|
|
|
|
+ :visible.sync="multilingualVisible"
|
|
|
|
|
+ :text="multilingualText"
|
|
|
|
|
+ :translations="data.multilingual"
|
|
|
|
|
+ @SubmitTranslation="handleMultilingualTranslation"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <SvgIcon icon-class="delete-black" size="12" @click="removeFile" />
|
|
|
|
|
- <ResourcesOperate :data="data.mp3_list[0]" />
|
|
|
|
|
- </div>
|
|
|
|
|
- <span class="tips">说明:需先点击“生成分词”按钮后,再进行文章校对或生成字幕节点</span>
|
|
|
|
|
- <div v-if="data.detail.length > 0" class="btn-box">
|
|
|
|
|
|
|
+ <div class="new-btn-box">
|
|
|
|
|
+ <p>音频内容</p>
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <SelectUpload label="" type="audio" :isNormal="true" @uploadSuccess="uploadAudioSuccess" />
|
|
|
|
|
+ <el-button :loading="autoLoading" @click="handleAutoAudio">生成音频</el-button>
|
|
|
|
|
+ <template v-if="data.mp3_list.length === 0">
|
|
|
|
|
+ <el-tooltip class="item" effect="dark" content="请先设置音频" placement="top">
|
|
|
|
|
+ <el-button disabled style="margin-left: 0">校对字幕</el-button>
|
|
|
|
|
+ </el-tooltip>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template v-else>
|
|
|
|
|
+ <template v-if="data.wordTime && data.wordTime.length > 0">
|
|
|
|
|
+ <a type="text" @click="againWordTime">重新生成字幕</a>
|
|
|
|
|
+ <a size="medium" @click="openCheckSubtitles('句子')">句子字幕</a>
|
|
|
|
|
+ <a size="medium" @click="compareTime('文字')">文字字幕</a>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template v-else>
|
|
|
|
|
+ <a v-if="!isWordTime" size="medium" @click="createWordTimes">自动生成字幕节点</a>
|
|
|
|
|
+ <p v-else>字幕节点生成中...请等待</p>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-if="data.mp3_list.length > 0" class="upload-file">
|
|
|
|
|
+ <div class="file-name">
|
|
|
|
|
+ <span>
|
|
|
|
|
+ <SvgIcon icon-class="note" size="12" />
|
|
|
|
|
+ <span>{{ data.mp3_list[0].name }}</span>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <SvgIcon icon-class="delete-black" size="12" @click="removeFile" />
|
|
|
|
|
+ <ResourcesOperate :data="data.mp3_list[0]" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- <div v-if="data.detail.length > 0" class="btn-box">
|
|
|
<a @click="handleChangeContent">生成分词</a>
|
|
<a @click="handleChangeContent">生成分词</a>
|
|
|
<a @click="checkArticle">文章校对</a>
|
|
<a @click="checkArticle">文章校对</a>
|
|
|
<a @click="editWordsFlag = !editWordsFlag">编辑生词短语气泡</a>
|
|
<a @click="editWordsFlag = !editWordsFlag">编辑生词短语气泡</a>
|
|
|
<template v-if="data.wordTime && data.wordTime.length > 0">
|
|
<template v-if="data.wordTime && data.wordTime.length > 0">
|
|
|
- <!-- <span>已有字幕时间节点</span> -->
|
|
|
|
|
<a type="text" @click="againWordTime">重新生成字幕时间</a>
|
|
<a type="text" @click="againWordTime">重新生成字幕时间</a>
|
|
|
<a size="medium" @click="openCheckSubtitles('句子')">校对句子字幕时间</a>
|
|
<a size="medium" @click="openCheckSubtitles('句子')">校对句子字幕时间</a>
|
|
|
- <!-- <a size="medium" @click="compareTime('句子')">校对句子字幕时间</a> -->
|
|
|
|
|
<a size="medium" @click="compareTime('文字')">校对文字字幕时间</a>
|
|
<a size="medium" @click="compareTime('文字')">校对文字字幕时间</a>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else>
|
|
<template v-else>
|
|
@@ -272,7 +307,7 @@
|
|
|
:translations="data.multilingual"
|
|
:translations="data.multilingual"
|
|
|
@SubmitTranslation="handleMultilingualTranslation"
|
|
@SubmitTranslation="handleMultilingualTranslation"
|
|
|
/>
|
|
/>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</div>
|
|
</div>
|
|
|
<el-dialog
|
|
<el-dialog
|
|
|
v-if="dialogFlag"
|
|
v-if="dialogFlag"
|
|
@@ -918,6 +953,7 @@ export default {
|
|
|
// 解析输入内容
|
|
// 解析输入内容
|
|
|
handleChangeContent() {
|
|
handleChangeContent() {
|
|
|
let flag = false;
|
|
let flag = false;
|
|
|
|
|
+ this.data.isFenci = true;
|
|
|
this.data.detail.forEach((item, index) => {
|
|
this.data.detail.forEach((item, index) => {
|
|
|
if (item.type === 'text') {
|
|
if (item.type === 'text') {
|
|
|
if (item.wordsList.length !== 0) {
|
|
if (item.wordsList.length !== 0) {
|
|
@@ -1527,6 +1563,7 @@ export default {
|
|
|
voice_type: this.data.property.voice_type,
|
|
voice_type: this.data.property.voice_type,
|
|
|
emotion: this.data.property.emotion,
|
|
emotion: this.data.property.emotion,
|
|
|
speed_ratio: this.data.property.speed_ratio,
|
|
speed_ratio: this.data.property.speed_ratio,
|
|
|
|
|
+ sentence_interval: 2000,
|
|
|
})
|
|
})
|
|
|
.then(({ status, file_id, file_url }) => {
|
|
.then(({ status, file_id, file_url }) => {
|
|
|
this.autoLoading = false;
|
|
this.autoLoading = false;
|
|
@@ -2093,6 +2130,58 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+.new-btn-box {
|
|
|
|
|
+ p {
|
|
|
|
|
+ margin: 0 0 10px;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #333;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ > div {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+ gap: 8px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ a {
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ padding: 6px 14px;
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ color: #000;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ background: #fff;
|
|
|
|
|
+ border: 1px solid #d9d9d9;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: #1890ff;
|
|
|
|
|
+ border-color: #1890ff;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ :deep .el-button {
|
|
|
|
|
+ padding: 6px 14px;
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ line-height: 1.5;
|
|
|
|
|
+ color: #000;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ background: #fff;
|
|
|
|
|
+ border: 1px solid #d9d9d9;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: #1890ff;
|
|
|
|
|
+ border-color: #1890ff;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &.is-disabled {
|
|
|
|
|
+ color: #ccc;
|
|
|
|
|
+ border-color: #e8e8e8;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.tabs-box {
|
|
.tabs-box {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
column-gap: 12px;
|
|
column-gap: 12px;
|