-
Notifications
You must be signed in to change notification settings - Fork 790
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add multilingual transcription + translation for whisper models (#87, #95) #133
Conversation
The documentation is not available anymore as the PR was closed or merged. |
Currently running into this issue: env.localModelPath = "http://127.0.0.1/transformer/models/";
const pipe = await pipeline("automatic-speech-recognition", "whisper-tiny");
const audioCTX = new AudioContext({
sampleRate: 16000
});
const arrayBuffer = await (await fetch(SPEECH2TEXT_AUDIO.currentSrc)).arrayBuffer();
const decoded = await audioCTX.decodeAudioData(arrayBuffer);
const audio = decoded.getChannelData(0);
const result = await pipe(audio, {
return_timestamps: true,
chunk_length_s: 30,
chunk_callback: (obj) => {
const decodedTokens = pipe.tokenizer.decode(obj.tokens);
console.log("progress tokens:", decodedTokens);
},
language: 'french',
task: 'transcribe',
});
console.log("result", result); Output:
Is this expected when transcribing Norwegian as French? Transcribing Norwegian as Norwegian: ' Vi kommer til krigens avsløttning. For jeg har vært høy til første oppdrag om likvidation av nyevr på lille 3. Så, ette krigen til allerstørtjonen av en slår fører og problemet post dramatisk stress. Og så for jeg har vært høy til å få lille 3. Jeg har en ann ting i Sverige. På elbjø, uten for Stockholm, i ekmevrk, et kommunen som da kurs, winteren, 1944, 1945. Hvorfor en 1945 blir han sent tilbakete nørige sammen medleger ikke som han, halvår fem til tiltelse, som i en st en struktur, og sålde vi i öster dagen, 90-dalt, lille støy med mere. På 45 stedet, i styrkert det i nærmere 500 man. Jeg kom ned i en løve
r dag. Jeg regler til å bli en ny region hvor vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag,
og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag,
og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag,
og vi har gjort en dag, og vi har gjort en dag, en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, og vi har gjort en dag, en dag, en dag, en dag, en dag, en dag,
en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag,
en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag,
en dag, en dag, en dag, en dag, en dag, en dag, en dag, en dag, en - og skjiter da min lovig 50 meter av slam. Men da kunne vi fortale meg at riktig er det enn vanlig avløskt, det blir riktig etterlig avsiktig altid, - og så kan man ta i dag med denne kringen, - - hvordan vi vil være til å være noen i filmen. Men grund avtipoford den her likerklart, og oppdager det var jo en avtidig noe mask.' Test file (wav with .zip ending, because "GitHub"): |
Can you try with a larger model (small or base)? I've noticed that the tiny model - especially when quantized - yields quite poor performance. Edit: I was able to reproduce the issue with tiny quantized. Let me see what's up. |
Nice 👍 If you are able to run the unquantized models, you'll probably also get a boost in performance.
I also recently added the medium, large, and large-v2 models (https://huggingface.co/models?other=transformers.js&sort=downloads&search=whisper). So, feel free to play around with those too. |
/** | ||
* Replicate python's .pop() method for objects. | ||
* @param {Object} obj The object to pop from. | ||
* @param {string} key The key to pop. | ||
* @param {*} defaultValue The default value to return if the key does not exist. | ||
* @returns {*} The value of the popped key. | ||
* @throws {Error} If the key does not exist and no default value is provided. | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you decide to use "strictNullChecks": true
, then this will return the expected types:
/** | |
* Replicate python's .pop() method for objects. | |
* @param {Object} obj The object to pop from. | |
* @param {string} key The key to pop. | |
* @param {*} defaultValue The default value to return if the key does not exist. | |
* @returns {*} The value of the popped key. | |
* @throws {Error} If the key does not exist and no default value is provided. | |
*/ | |
/** | |
* Replicate python's .pop() method for objects. | |
* @param {OBJ} obj The object to pop from. | |
* @param {KEY} key The key to pop. | |
* @param {DEF} [defaultValue=undefined] The default value to return if the key does not exist. | |
* @template {Record<string, any>} OBJ | |
* @template {string} KEY | |
* @template DEF | |
* @throws {Error} If the key does not exist and no default value is provided. | |
* @returns {Exclude<OBJ[KEY] | DEF, undefined>} The value of the popped key. | |
*/ |
@kungfooman I didn't forget about your suggestion (improved typing) - I just have to merge this in to get another project working (which you will soon see 😉). Can you make a PR with these changes alone? |
Without We could enable that setting, but then we see around 70 errors, which require some changes/fixes, for example: (requires a tokenizer, but I'm looking forward to the surprise 😅 👍 |
Allow users to transcribe non-English languages, as well as translate to English.