it-swarm.com.de

Gibt es eine Möglichkeit, die Javascript SpeechRecognition-API mit einer Audiodatei zu verwenden?

Ich möchte die SpeechRecognition api mit einer Audiodatei (MP3, Wave etc.)

14
The Surrican

Die kurze Antwort lautet Nein.

Die Web Speech Api-Spezifikation verhindert dies nicht (der Browser kann dem Endbenutzer die Auswahl einer Datei als Eingabe zulassen), der Audioeingangsstrom wird jedoch niemals für den aufrufenden JavaScript-Code (im aktuellen Entwurf) bereitgestellt Version), so dass Sie keine Möglichkeit haben, das in den Spracherkennungsdienst eingegebene Audio zu lesen oder zu ändern.

Diese Spezifikation wurde so konzipiert, dass der Javascript-Code nur Zugriff auf den vom Spracherkennungsdienst kommenden Ergebnistext hat.

7
Tiago Sousa

Sie können es grundsätzlich nur mit default Audioinput-Gerät verwenden, das auf Betriebssystemebene ausgewählt wird ...

Daher müssen Sie nur Ihre Datei in Ihren default-Audioeingang abspielen

2 Optionen möglich:

1

Hab das heute getestet und es funktioniert perfekt :-)

2

DIESES IS] wurde nicht von mir getestet, daher kann ich nicht bestätigen, dass dies funktioniert, aber Sie können Audiodateien mithilfe von Selenium in Chrome einspeisen

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);

Ich bin mir jedoch nicht sicher, ob dieser Stream default Audioinput ersetzt

2

Nach MDN können Sie das NICHT tun. Sie können keinen Stream in den Erkennungsdienst einspeisen

Das ist ein großes Problem ... Sie können nicht einmal das von SpeechRecognition verwendete Mikrofon auswählen

Dies geschieht aus einem bestimmten Grund, Google möchte seine CLOUD SPEECH API verkaufen

Sie müssen Dienste wie CLOUD SPEECH API verwenden.

0

Ja, es ist möglich, das Textprotokoll der Wiedergabe einer Audiodatei mithilfe von webkitSpeechRecognition zu erhalten. Die Qualität des Transkripts hängt von der Qualität der Audiowiedergabe ab. 

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