網頁實時字幕(Live Caption)調研


故事

國外客戶講英語非常快,teams或者zoom會議的時候,好多都聽不懂,當然主要原因是因為自己英語水平菜。

Teams和zoom現在會議的時候也有實時字幕選項了,理論上本文終結:)

那么,有沒有一種實時字幕的軟件呢?有,百度,科大訊飛都有此類產品。各種雲服務也有此類API,自己也可以寫一個簡單的軟件使用。
但是,以上都是付費的。
白嫖可以嗎?

Chrome live caption

Chrome其實有自帶的實時字幕功能,實時性很強,識別率也很高

但是這個實時字幕不是一個單獨的軟件,也沒有提供API,完全就是看心情(檢測到語音)自己出來。

那么,我有一個大膽的想法,我們可以實時捕獲系統輸出的音頻,用網頁audio播放,播放的時候不就自動字幕出來了嗎?

一番搜索,瀏覽器還真有對應的接口navigator.mediaDevices.getUserMedia

//navigator.mediaDevices.getSupportedConstraints();
//navigator.mediaDevices.enumerateDevices()
async function startCapture(displayMediaOptions) {
        try {
            document.getElementById("audio").srcObject = await navigator.mediaDevices.getUserMedia({
                audio: true
            });
        } catch (err) {
            console.error("Error: " + err);
        }
}
startCapture();

ref:https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia

跑起來,腦瓜子嗡嗡的,因為錄的是系統輸出的音頻,而這個輸出包含目標輸出和你網頁本身播放的聲音,然后就無限循環了。
除了音質一言難盡之外,實時字幕並沒有出來。

1.通過麥克風輸入英文speech,使用該代碼,沒有回聲且能正常播放的情況下,實時字幕依然不會彈出。
2.而在網頁中指定audio的source,比如abc.mp3,即使把audio mute后,字幕依然會出現。
所以,Chrome自帶的Live Caption出現,並不是“聽”到了聲音,而是大約通過Chrome檢測到了"audio resource", audio stream好像並不可以,所以也注定我下面的嘗試會失敗。

語音聊天是怎么做的?

這是個思路,做個本機的語音聊天,只不過是應用程序互相聊天而已,且是一個(Teams)說一個(Chrome)聽而已。
通信雙方使用WebSocket通信,服務端還是捕獲系統音頻流,實時傳回到客戶端(網頁)然后播放。

這里使用了兩個好用且強大的開源產品
websocket-sharp: https://github.com/sta/websocket-sharp
NAudio: https://github.com/naudio/NAudio

放上半成品代碼:https://github.com/Luzemin/WebPagePlaySystemAudioStream

效果和剛才一樣,錄音回聲問題,以及實時字幕未出來。
非要說有辦法,那就是使用虛擬聲卡軟件

ref: https://stackoverflow.com/questions/31623824/how-to-capture-audio-from-specific-application-and-route-to-specific-audio-devic

我沒有嘗試。換個關鍵詞看看了,無意看到webkitSpeechRecognition

webkitSpeechRecognition語音識別API使用

var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;

recognition.onstart = function() { ... }
recognition.onresult = function(event) { ... }
recognition.onerror = function(event) { ... }
recognition.onend = function() { ... }

ref:https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API

webkitSpeechRecognition實現

Chrome25+就有了該接口:
https://developers.google.com/web/updates/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API

官方在線demo:
https://www.google.com/intl/en/chrome/demos/speech.html

CodePen demo:
https://codepen.io/davatron5000/pen/IKAxb

github某個實現版:
https://github.com/MidCamp/live-captioning

現成免費產品版:
https://webcaptioner.com/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM