瀏覽代碼

自动生成音频语速

natasha 2 天之前
父節點
當前提交
93399dad8d

+ 8 - 0
src/views/book/courseware/create/components/question/article/NewWord.vue

@@ -270,6 +270,11 @@
             <el-option v-for="{ emotion, name } in emotion_list" :key="emotion" :label="name" :value="emotion" />
           </el-select>
         </el-form-item>
+        <el-form-item label="语速">
+          <el-select v-model="data.property.speed_ratio">
+            <el-option v-for="{ value, label } in speedRatioList" :key="value" :label="label" :value="value" />
+          </el-select>
+        </el-form-item>
       </template>
 
       <el-form-item label="拼音位置">
@@ -309,6 +314,7 @@ import {
   pinyinPositionLists,
 } from '@/views/book/courseware/data/article';
 import cnchar from 'cnchar';
+import { speedRatioList } from '@/views/book/courseware/data/common';
 
 export default {
   name: 'NewWordPage',
@@ -335,6 +341,7 @@ export default {
       subtitleList: [],
       voice_type_list: [],
       emotion_list: [],
+      speedRatioList,
     };
   },
   methods: {
@@ -493,6 +500,7 @@ export default {
         text: this.data.new_word_list[index].new_word.replace(/<[^>]+>/g, ''),
         voice_type: this.data.property.voice_type,
         emotion: this.data.property.emotion,
+        speed_ratio: this.data.property.speed_ratio,
       })
         .then(({ status, file_id }) => {
           if (status === 1) {

+ 1 - 0
src/views/book/courseware/create/components/question/character/Character.vue

@@ -167,6 +167,7 @@ export default {
         text: con.replace(/<[^>]+>/g, ''),
         voice_type: this.data.property.voice_type,
         emotion: this.data.property.emotion,
+        speed_ratio: this.data.property.speed_ratio,
       })
         .then(({ status, file_id, file_url }) => {
           if (status === 1) {

+ 7 - 0
src/views/book/courseware/create/components/question/character/CharacterSetting.vue

@@ -80,6 +80,11 @@
             <el-option v-for="{ emotion, name } in emotion_list" :key="emotion" :label="name" :value="emotion" />
           </el-select>
         </el-form-item>
+        <el-form-item label="语速">
+          <el-select v-model="property.speed_ratio">
+            <el-option v-for="{ value, label } in speedRatioList" :key="value" :label="label" :value="value" />
+          </el-select>
+        </el-form-item>
       </template>
     </el-form>
   </div>
@@ -97,6 +102,7 @@ import {
   frameList,
 } from '@/views/book/courseware/data/character';
 import { GetTextToAudioConfParamList } from '@/api/app';
+import { speedRatioList } from '@/views/book/courseware/data/common';
 
 export default {
   name: 'CharacterSetting',
@@ -111,6 +117,7 @@ export default {
       frameList,
       voice_type_list: [],
       emotion_list: [],
+      speedRatioList,
     };
   },
   created() {

+ 1 - 0
src/views/book/courseware/create/components/question/fill/Fill.vue

@@ -265,6 +265,7 @@ export default {
         text: this.data.content.replace(/<[^>]+>/g, ''),
         voice_type: this.data.property.voice_type,
         emotion: this.data.property.emotion,
+        speed_ratio: this.data.property.speed_ratio,
       })
         .then(({ status, file_id }) => {
           if (status === 1) {

+ 7 - 0
src/views/book/courseware/create/components/question/fill/FillSetting.vue

@@ -47,6 +47,11 @@
             <el-option v-for="{ emotion, name } in emotion_list" :key="emotion" :label="name" :value="emotion" />
           </el-select>
         </el-form-item>
+        <el-form-item label="语速">
+          <el-select v-model="property.speed_ratio">
+            <el-option v-for="{ value, label } in speedRatioList" :key="value" :label="label" :value="value" />
+          </el-select>
+        </el-form-item>
       </template>
       <el-form-item label="填空字体">
         <el-select v-model="property.fill_font" placeholder="请选择">
@@ -103,6 +108,7 @@ import {
 } from '@/views/book/courseware/data/fill';
 
 import { GetTextToAudioConfParamList } from '@/api/app';
+import { speedRatioList } from '@/views/book/courseware/data/common';
 
 export default {
   name: 'FillSetting',
@@ -118,6 +124,7 @@ export default {
       fillTypeList,
       voice_type_list: [],
       emotion_list: [],
+      speedRatioList,
     };
   },
   created() {

+ 1 - 0
src/views/book/courseware/create/components/question/new_word/NewWord.vue

@@ -585,6 +585,7 @@ export default {
         text: this.data.new_word_list[index].new_word.replace(/<[^>]+>/g, ''),
         voice_type: this.data.property.voice_type,
         emotion: this.data.property.emotion,
+        speed_ratio: this.data.property.speed_ratio,
       })
         .then(({ status, file_id }) => {
           if (status === 1) {

+ 7 - 0
src/views/book/courseware/create/components/question/new_word/NewWordSetting.vue

@@ -37,6 +37,11 @@
             <el-option v-for="{ emotion, name } in emotion_list" :key="emotion" :label="name" :value="emotion" />
           </el-select>
         </el-form-item>
+        <el-form-item label="语速">
+          <el-select v-model="property.speed_ratio">
+            <el-option v-for="{ value, label } in speedRatioList" :key="value" :label="label" :value="value" />
+          </el-select>
+        </el-form-item>
       </template>
       <el-form-item label="拼音位置">
         <el-radio-group v-model="property.pinyin_position">
@@ -61,6 +66,7 @@ import {
   switchOption,
 } from '@/views/book/courseware/data/newWord';
 import { GetTextToAudioConfParamList } from '@/api/app';
+import { speedRatioList } from '@/views/book/courseware/data/common';
 
 export default {
   name: 'NewWordSetting',
@@ -75,6 +81,7 @@ export default {
       switchOption,
       voice_type_list: [],
       emotion_list: [],
+      speedRatioList,
     };
   },
   created() {

+ 1 - 0
src/views/book/courseware/create/components/question/pinyin_base/PinyinBase.vue

@@ -135,6 +135,7 @@ export default {
           text: this.data.character.trim() || this.data.content_hz,
           voice_type: this.data.property.voice_type,
           emotion: this.data.property.emotion,
+          speed_ratio: this.data.property.speed_ratio,
         };
         TextToAudioFile(data)
           .then(({ status, file_id, file_url }) => {

+ 7 - 0
src/views/book/courseware/create/components/question/pinyin_base/PinyinBaseSetting.vue

@@ -45,6 +45,11 @@
             <el-option v-for="{ emotion, name } in emotion_list" :key="emotion" :label="name" :value="emotion" />
           </el-select>
         </el-form-item>
+        <el-form-item label="语速">
+          <el-select v-model="property.speed_ratio">
+            <el-option v-for="{ value, label } in speedRatioList" :key="value" :label="label" :value="value" />
+          </el-select>
+        </el-form-item>
       </template>
       <el-form-item label="读音位置">
         <el-radio-group v-model="property.audio_position">
@@ -79,6 +84,7 @@ import {
 } from '@/views/book/courseware/data/pinyinBase';
 
 import { GetTextToAudioConfParamList } from '@/api/app';
+import { speedRatioList } from '@/views/book/courseware/data/common';
 
 export default {
   name: 'PinyinBaseSetting',
@@ -94,6 +100,7 @@ export default {
       markList,
       voice_type_list: [],
       emotion_list: [],
+      speedRatioList,
     };
   },
   created() {

+ 3 - 0
src/views/book/courseware/data/article.js

@@ -81,6 +81,7 @@ export function getArticleProperty() {
     content_height: '', // 内容高度
     voice_type: '', // 音色
     emotion: '', // 风格,情感
+    speed_ratio: '', // 语速
 
     ...commonComponentProperty,
   };
@@ -105,6 +106,7 @@ export function getArticleData() {
         is_has_infor: inforList[0].value,
         voice_type: '', // 音色
         emotion: '', // 风格,情感
+        speed_ratio: '', // 语速
       },
       new_word_list: [],
       lrc_arr: [], // lrc 文件解析后的数据
@@ -157,6 +159,7 @@ export function getArticleData() {
         is_has_infor: inforList[0].value,
         voice_type: '', // 音色
         emotion: '', // 风格,情感
+        speed_ratio: '', // 语速
       },
       new_word_list: [],
       lrc_arr: [], // lrc 文件解析后的数据

+ 1 - 0
src/views/book/courseware/data/character.js

@@ -88,6 +88,7 @@ export function getCharacterProperty() {
     is_enable_error: showList[0].value,
     voice_type: '', // 音色
     emotion: '', // 风格,情感
+    speed_ratio: '', // 语速
     ...commonComponentProperty,
   };
 }

+ 10 - 0
src/views/book/courseware/data/common.js

@@ -224,3 +224,13 @@ export const reversedComputeOptionMethods = {
   [serialNumberTypeList[2].value]: (i) => i.charCodeAt(0) - 97 + 1, // 小写
   [serialNumberTypeList[3].value]: (i) => i.charCodeAt(0) - 65 + 1,
 };
+
+// 生成音频倍速
+export const speedRatioList = [
+  { value: 0.5, label: '0.5' },
+  { value: 0.75, label: '0.75' },
+  { value: 1, label: '1.0' },
+  { value: 1.25, label: '1.25' },
+  { value: 1.5, label: '1.5' },
+  { value: 2, label: '2.0' },
+];

+ 3 - 1
src/views/book/courseware/data/dialogueArticle.js

@@ -121,7 +121,7 @@ export function getArticleProperty() {
     content_height: '', // 内容高度
     voice_type: '', // 音色
     emotion: '', // 风格,情感
-
+    speed_ratio: '', // 语速
     ...commonComponentProperty,
   };
 }
@@ -145,6 +145,7 @@ export function getArticleData() {
         is_has_infor: inforList[0].value,
         voice_type: '', // 音色
         emotion: '', // 风格,情感
+        speed_ratio: '', // 语速
       },
       new_word_list: [],
       lrc_arr: [], // lrc 文件解析后的数据
@@ -196,6 +197,7 @@ export function getArticleData() {
         is_has_infor: inforList[0].value,
         voice_type: '', // 音色
         emotion: '', // 风格,情感
+        speed_ratio: '', // 语速
       },
       new_word_list: [],
       lrc_arr: [], // lrc 文件解析后的数据

+ 1 - 0
src/views/book/courseware/data/fill.js

@@ -64,6 +64,7 @@ export function getFillProperty() {
     is_first_sentence_first_hz_pinyin_first_char_upper_case: displayList[0].value, // 句首大写
     voice_type: '', // 音色
     emotion: '', // 风格,情感
+    speed_ratio: '', // 语速
     ...commonComponentProperty,
   };
 }

+ 1 - 0
src/views/book/courseware/data/newWord.js

@@ -75,6 +75,7 @@ export function getNewWordProperty() {
     is_has_infor: inforList[0].value,
     voice_type: '', // 音色
     emotion: '', // 风格,情感
+    speed_ratio: '', // 语速
     ...commonComponentProperty,
   };
 }

+ 1 - 0
src/views/book/courseware/data/pinyinBase.js

@@ -76,6 +76,7 @@ export function getPinyinBaseProperty() {
 
     voice_type: '', // 音色
     emotion: '', // 风格,情感
+    speed_ratio: '', // 语速
 
     ...commonComponentProperty,
   };