Initial implementation of TTS with Web Speech API (#120)

* Initial implementation of TTS with Web Speech API

* Add translations for annotator tools
This commit is contained in:
Huang Xin
2025-01-07 21:57:55 +01:00
committed by GitHub
parent a59a3b633b
commit 07b04b82e6
27 changed files with 748 additions and 13 deletions
+39
View File
@@ -0,0 +1,39 @@
export class AsyncQueue<T> {
private queue: T[] = [];
private resolves: ((value: void) => void)[] = [];
private done = false;
enqueue(item: T) {
this.queue.push(item);
if (this.resolves.length > 0) {
const resolve = this.resolves.shift();
resolve?.();
}
}
finish() {
this.done = true;
while (this.resolves.length > 0) {
const resolve = this.resolves.shift();
resolve?.();
}
}
async dequeue(): Promise<T | null> {
if (this.queue.length > 0) {
return this.queue.shift()!;
}
if (this.done) {
return null;
}
return new Promise<T | null>((resolve) => {
this.resolves.push(() => {
if (this.queue.length > 0) {
resolve(this.queue.shift()!);
} else {
resolve(null);
}
});
});
}
}