45 lines
		
	
	
		
			994 B
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			994 B
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <el-row type="flex" align="middle">
 | |
|     <el-button type="text" size="small" :loading="loading" icon="iconfont iconClock" title="语音播报"
 | |
|                @click="getSpeechByContent"/>
 | |
|     <ai-audio v-if="speech" :src="speech" skin="flat"/>
 | |
|   </el-row>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| export default {
 | |
|   name: "AiTransSpeech",
 | |
|   props: {
 | |
|     instance: {type: Function, required: true},
 | |
|     content: String
 | |
|   },
 | |
|   data() {
 | |
|     return {
 | |
|       speech: "",
 | |
|       loading: false
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     getSpeechByContent() {
 | |
|       this.loading = true
 | |
|       this.instance.post("/app/msc/transToSpeech", null, {
 | |
|         params: {
 | |
|           fileName: "demo",
 | |
|           words: this.content
 | |
|         }
 | |
|       }).then(res => {
 | |
|         this.loading = false
 | |
|         if (res && res.data) {
 | |
|           let url = res.data.join("")
 | |
|           this.speech = url.substring(0, url.indexOf(";"))
 | |
|         }
 | |
|       }).catch(() => this.loading = false)
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| 
 | |
| <style lang="scss" scoped>
 | |
| 
 | |
| </style>
 |