uniapp微信小程序语音转文字功能

文章来源:CSDN 发布日期:2024-04-23 分类:小程序博客 阅读( )

先看效果

首先是在微信公众平台),左侧菜单栏中的设置-->第三方设置下的插件管理-->添加-->搜索微信同声传译

 接下来打开你的项目

// manifest.json"mp-weixin": {    "appid": "xx", // 这是你小程序的AppId    ...    "plugins": {        "WechatSI": {            "version": "0.3.3", // 版本 可以自己去文档查看选择版本            "provider": "wx069ba97219f66d99" // 插件id        }        }}

 做完以上步骤之后,就可以进行开发了,效果图里的业务代码不方便展示,我自己写了个demo可以直接复制粘贴

<template>	<view>		<button @touchstart="streamRecord" @touchend="endStreamRecord" form-type="submit" type="primary"			class="fc-white">语音识别按钮</button>		<view> 语音识别内容:{{currentText}} </view>		<!-- 语音音阶动画 长按说话时的动画 -->		<view class="prompt" v-if="animation">			<section class="dots-container">				<view class="dot"></view>				<view class="dot"></view>				<view class="dot"></view>				<view class="dot"></view>				<view class="dot"></view>			</section>			<text>录音中...</text>		</view>	</view></template><script>	var plugin = requirePlugin("WechatSI")	let manager = plugin.getRecordRecognitionManager()	export default {		data() {			return {				currentText: "",				animation: false,			}		},		methods: {			streamRecord: function() {				console.log('开始')				this.animation = true;				manager.start({					lang: 'zh_CN',				})			},			endStreamRecord: function() {				this.animation = false;				console.log('结束')				manager.stop()			},			initRecord: function() {				//有新的识别内容返回,则会调用此事件				manager.onRecognize = (res) => {					let text = res.result					this.currentText = text				}				// 识别结束事件				manager.onStop = (res) => {					console.log(res, 37);					let text = res.result					if (text == '') {						console.log('没有说话')						return					}					this.currentText = text				}			},		},		onLoad() {			this.initRecord()		},	}</script><style lang="scss" scoped>	/* 动画 */	.prompt {		width: 100%;		height: 160rpx;		position: fixed;		bottom: 50vh;	}	.prompt text {		position: absolute;		bottom: 2px;		color: white;		left: calc(45%);		animation: puls 1.5s infinite ease-in-out;	}	.dots-container {		display: flex;		align-items: center;		justify-content: center;		height: 80px;		width: 45%;		position: absolute;		bottom: 0px;		left: calc(27.5%);		background-color: rgba(0, 0, 0, 0.5);		border-radius: 40rpx;	}	.dot {		height: 28rpx;		width: 28rpx;		margin-right: 20rpx;		border-radius: 20rpx;		background-image: linear-gradient(#5396FF, #AEDAFF);		animation: pulse 1.5s infinite ease-in-out;	}	.dot:last-child {		margin-right: 0;	}	.dot:nth-child(1) {		animation-delay: -0.3s;	}	.dot:nth-child(2) {		animation-delay: -0.1s;	}	.dot:nth-child(3) {		animation-delay: 0.1s;	}	@keyframes pulse {		0% {			transform: scale(0.8);			background-color: #66A3FF;			/* 更改为与.dot背景色相近的颜色 */			box-shadow: 0 0 0 0 rgba(102, 163, 255, 0.7);			/* 使用相同的颜色 */		}		50% {			transform: scale(1.2);			background-color: #ADD8FF;			/* 稍浅的颜色,增加对比度 */			box-shadow: 0 0 0 10px rgba(174, 218, 255, 0);			/* 使用.dot的结束颜色,但透明度为0 */		}		100% {			transform: scale(0.8);			background-color: #66A3FF;			/* 与0%时的颜色相同 */			box-shadow: 0 0 0 0 rgba(102, 163, 255, 0.7);			/* 与0%时的box-shadow相同 */		}	}	@keyframes puls {		0% {			transform: translateY(0px)		}		50% {			transform: translateY(-4px)		}		100% {			transform: translateY(0px)		}	}</style>

最新文章:

二维码