v88: async onopen + 10ms задержка между чанками — буфер Chrome
This commit is contained in:
Vendored
+4
-2
@@ -276,7 +276,7 @@ async function transcribe(blob) {
|
|||||||
console.log('[WS] timeout'); ws.close(); resolve({ text: '', error: 'timeout' });
|
console.log('[WS] timeout'); ws.close(); resolve({ text: '', error: 'timeout' });
|
||||||
}, 60000);
|
}, 60000);
|
||||||
|
|
||||||
ws.onopen = () => {
|
ws.onopen = async () => {
|
||||||
console.log('[WS] connected, sending ' + total + ' chunks');
|
console.log('[WS] connected, sending ' + total + ' chunks');
|
||||||
for (let i = 0; i < base64.length; i += CHUNK) {
|
for (let i = 0; i < base64.length; i += CHUNK) {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
@@ -286,6 +286,8 @@ async function transcribe(blob) {
|
|||||||
m: mime,
|
m: mime,
|
||||||
n: total
|
n: total
|
||||||
}));
|
}));
|
||||||
|
// Даём браузеру протолкнуть буфер — Chrome может терять фреймы без этого
|
||||||
|
await new Promise(r => setTimeout(r, 10));
|
||||||
}
|
}
|
||||||
ws.send(JSON.stringify({ c: -1 }));
|
ws.send(JSON.stringify({ c: -1 }));
|
||||||
console.log('[WS] all sent');
|
console.log('[WS] all sent');
|
||||||
@@ -803,7 +805,7 @@ async function doCompare(blob, originalText, duration) {
|
|||||||
<script>
|
<script>
|
||||||
// ---------- Глобальные переменные и инициализация ----------
|
// ---------- Глобальные переменные и инициализация ----------
|
||||||
const GROQ_API_KEY = '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';
|
const GROQ_API_KEY = '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';
|
||||||
const VERSION = 'v87';
|
const VERSION = 'v88';
|
||||||
|
|
||||||
let mediaRecorder, audioChunks = [], userAudioBlob = null, ttsText = '';
|
let mediaRecorder, audioChunks = [], userAudioBlob = null, ttsText = '';
|
||||||
let isRecording = false, isAnalyzing = false, micAnalyser = null, micAnimId = null;
|
let isRecording = false, isAnalyzing = false, micAnalyser = null, micAnimId = null;
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// ---------- Глобальные переменные и инициализация ----------
|
// ---------- Глобальные переменные и инициализация ----------
|
||||||
const GROQ_API_KEY = '';
|
const GROQ_API_KEY = '';
|
||||||
const VERSION = 'v87';
|
const VERSION = 'v88';
|
||||||
|
|
||||||
let mediaRecorder, audioChunks = [], userAudioBlob = null, ttsText = '';
|
let mediaRecorder, audioChunks = [], userAudioBlob = null, ttsText = '';
|
||||||
let isRecording = false, isAnalyzing = false, micAnalyser = null, micAnimId = null;
|
let isRecording = false, isAnalyzing = false, micAnalyser = null, micAnimId = null;
|
||||||
|
|||||||
+3
-1
@@ -24,7 +24,7 @@ async function transcribe(blob) {
|
|||||||
console.log('[WS] timeout'); ws.close(); resolve({ text: '', error: 'timeout' });
|
console.log('[WS] timeout'); ws.close(); resolve({ text: '', error: 'timeout' });
|
||||||
}, 60000);
|
}, 60000);
|
||||||
|
|
||||||
ws.onopen = () => {
|
ws.onopen = async () => {
|
||||||
console.log('[WS] connected, sending ' + total + ' chunks');
|
console.log('[WS] connected, sending ' + total + ' chunks');
|
||||||
for (let i = 0; i < base64.length; i += CHUNK) {
|
for (let i = 0; i < base64.length; i += CHUNK) {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
@@ -34,6 +34,8 @@ async function transcribe(blob) {
|
|||||||
m: mime,
|
m: mime,
|
||||||
n: total
|
n: total
|
||||||
}));
|
}));
|
||||||
|
// Даём браузеру протолкнуть буфер — Chrome может терять фреймы без этого
|
||||||
|
await new Promise(r => setTimeout(r, 10));
|
||||||
}
|
}
|
||||||
ws.send(JSON.stringify({ c: -1 }));
|
ws.send(JSON.stringify({ c: -1 }));
|
||||||
console.log('[WS] all sent');
|
console.log('[WS] all sent');
|
||||||
|
|||||||
Reference in New Issue
Block a user