web-dev-qa-db-fra.com

Est-il possible d’utiliser l’API Javascript SpeechRecognition avec un fichier audio?

Je veux utiliser le SpeechRecognition api avec un fichier audio (mp3, wave, etc.).

14
The Surrican

La réponse courte est Non.

La spécification Web Speech Api n’interdit pas cela (le navigateur peut permettre à l’utilisateur final de choisir un fichier à utiliser comme entrée), mais le flux d’entrée audio n’est jamais fourni au code javascript appelant version), vous n'avez donc aucun moyen de lire ou de modifier le son entré dans le service de reconnaissance vocale.

Cette spécification a été conçue pour que le code javascript n’ait accès qu’au texte résultant du service de reconnaissance vocale.

7
Tiago Sousa

En gros, vous ne pouvez l’utiliser qu’avec default périphérique audio choisi au niveau du système d’exploitation ...

Par conséquent, il vous suffit de lire votre fichier dans votre entrée audio default

2 options possibles:

1

Testé cela aujourd'hui, et cela fonctionne parfaitement :-)

2

CECI IS N'EST PAS TESTÉ PAR MOI, je ne peux donc pas confirmer que cela fonctionne, mais vous pouvez importer un fichier audio en chrome à l'aide de Selenium ...

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
ChromeOptions options = new ChromeOptions();
options.addArguments("--allow-file-access-from-files",
                     "--use-fake-ui-for-media-stream",
                     "--allow-file-access",
                     "--use-file-for-fake-audio-capture=D:\\PATH\\TO\\WAV\\xxx.wav",
                     "--use-fake-device-for-media-stream");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

Mais je ne sais pas si ce flux remplacera default audioinput

2
Andrii Muzalevskyi

Selon MDN vous ne pouvez pas faire cela. Vous ne pouvez pas introduire de flux dans le service de reconnaissance

C'est un gros problème ... Vous ne pouvez même pas sélectionner le microphone utilisé par SpeechRecognition

Cela se fait par but, Google veut vendre son API CLOUD SPEECH

Vous devez utiliser des services tels que API CLOUD SPEECH

0
Andrii Muzalevskyi

Oui, il est possible d’obtenir la transcription textuelle de la lecture d’un fichier audio à l’aide de webkitSpeechRecognition. La qualité de la transcription dépend de la qualité de la lecture audio. 

const recognition = new webkitSpeechRecognition();

const audio = new Audio();

recognition.continuous = true;
recognition.interimResults = true;
recognition.onresult = function(event) {
  if (event.results[0].isFinal) {
    // do stuff with `event.results[0][0].transcript`
    console.log(event.results[0][0].transcript);
    recognition.stop();
  }
}

recognition.onaudiostart = e => {
  console.log("audio capture started");
}

recognition.onaudioend = e => {
  console.log("audio capture ended");
}

audio.oncanplay = () => {
  recognition.start();
  audio.play();
}

audio.src = "/path/to/audio";

jsfiddle https://jsfiddle.net/guest271314/guvn1yq6/

0
guest271314