前端想要实现语音转文字,实在不需要任何云服务,浏览器自带的api就能搞定。
下面是已经封装好的代码,
复制之后可以在控制台只接运行。
- class SpeechRecognitionManager {
- tempTranscript = ''
- isRecording = false;
- timeoutid = 0;
- exitKeywors = ['stop', 'exit', 'quit', '退出', '停止识别', '说完了', '停止', '发送', '好了']
- constructor() {
- this.recognition = new webkitSpeechRecognition();
- this.recognition.continuous = true;
- this.recognition.interimResultsTimeout = 30000;
- this.recognition.lang = 'zh-CN';
- this.recognition.maxSpeechTime = 60000;
- this.resultListeners = [];
- this.recognition.onresult = (event) => {
- const transcript = Array.from(event.results).at(-1)[0].transcript;
- clearTimeout(this.timeoutid);
- if (this.exitKeywors.some(keyword => transcript.includes(keyword) && transcript.length <= 7)) {
- this.recognition.stop();
- // this.isRecording = false;
- // this.notifyResultListeners({
- // transcript: this.tempTranscript,
- // type: 'end',
- // });
- return;
- }
- this.timeoutid = setTimeout(() => {
- this.recognition.stop();
- }, 4000);
- this.tempTranscript += transcript;
- this.notifyResultListeners({
- transcript,
- type: 'tempresult',
- });
- };
- this.recognition.onend = () => {
- this.isRecording = false;
- this.notifyResultListeners({
- type: 'end',
- transcript: this.tempTranscript
- });
- };
- this.recognition.onerror = (event) => {
- this.isRecording = false;
- this.notifyResultListeners({
- type: 'error',
- transcript: this.tempTranscript,
- error: event.error
- });
- };
- this.recognition.onstart = () => {
- this.isRecording = true;
- this.tempTranscript = '';
- this.notifyResultListeners({
- type: 'start'
- });
- };
- }
- addResultListener(listener) {
- this.resultListeners.push(listener);
- }
- notifyResultListeners(data) {
- this.resultListeners.forEach(listener => {
- listener(data);
- });
- }
- startRecognition() {
- if (this.isRecording) return console.log('正在识别');
- console.log('开始识别');
- this.tempTranscript = '';
- this.recognition.start();
- }
- stopRecognition() {
- if (!this.isRecording) return console.log('未开始识别');
- this.isRecording = false;
- console.log('停止识别');
- this.recognition.stop();
- }
- }
- // 使用示例
- window.speechmanager = new SpeechRecognitionManager();
- // // 添加结果监听函数
- // speechmanager.addResultListener(transcript => {
- // console.log('识别结果:', transcript);
- // });
- // // 开始识别
- // speechmanager.startRecognition();
- // // // 停止识别
- // // // manager.stopRecognition();
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |