使用系统自带声音转录功能,可以同时支持mac和windows

script.js

let recognition = null;

async function startRecording() {
    try {
        recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
        recognition.continuous = true;
        recognition.interimResults = false;
        recognition.lang = 'zh-CN'; // 设置语言为中文

        recognition.onresult = function(event) {
            let transcript = '';
            for (let i = event.resultIndex; i < event.results.length; i++) {
                transcript += event.results[i][0].transcript;
            }
            console.log('transcription:', transcript);
            document.getElementById('transcription').innerText += transcript +'\n';
        };

        recognition.onerror = function(event) {
            console.error('Speech recognition error:', event.error);
            if (event.error === 'not-allowed') {
                alert('麦克风权限被拒绝。请在浏览器设置中授予麦克风权限。');
            }
        };

        recognition.start();
        console.log('start recording');
    } catch (error) {
        console.error('Error starting recording:', error);
    }
}

function stopRecording() {
    if (recognition) {
        recognition.stop();
        console.log('stop recording');
    }
}

async function listenForStartSignal() {
    console.log('listenForStartSignal ...');
    try {
        const response = await fetch('/start-recording');
        if (!response.ok) {
            throw new Error('Network response was not ok ' + response.statusText);
        }
        const data = await response.json();
        console.log('Received data:', data);
        if (data.start) {
            startRecording();
        }
    } catch (error) {
        console.error('Error:', error);
    }
}

async function listenForStopSignal() {
    console.log('listenForStopSignal ...');
    try {
        const response = await fetch('/stop-recording');
        if (!response.ok) {
            throw new Error('Network response was not ok ' + response.statusText);
        }
        const data = await response.json();
        console.log('Received data:', data);
        if (data.start) {
            stopRecording();
        }
    } catch (error) {
        console.error('Error:', error);
    }
}

document.addEventListener('DOMContentLoaded', function() {
    console.log('DOM fully loaded and parsed');
    listenForStartSignal();
    listenForStopSignal();
});

windows效果:

mac效果:

同时支持麦克风和扬声器的设置:

聚集设备:

多输出设备:

系统设置-声音输入:

输出:

效果:

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值