Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  So konvertieren Sie Sprache mit Node.js in Text

So konvertieren Sie Sprache mit Node.js in Text

WBOY
WBOYnach vorne
2023-04-11 19:30:271848Durchsuche

Übersetzer |. Li Rui

Rezensent |. to-text-API, die zum Transkribieren von Audio in MP3- und WAV-Dateiformaten verwendet werden kann. Diese Demo enthält Schritt-für-Schritt-Anleitungen zum Aufrufen dieser API anhand des Beispiels „Node.js-Code ausführen“.

So konvertieren Sie Sprache mit Node.js in Text Überblick über die Spracherkennungstechnologie

Menschen betrachten die Spracherkennungstechnologie oft als eine relativ neue Ergänzung der zeitgenössischen Technologielandschaft , und das ist nur ein Teil der Wahrheit. Spracherkennungstechnologie gibt es schon seit mehr als einem halben Jahrhundert, angefangen mit Zahlen-/Texterkennungssystemen mit begrenzten Funktionen, die von einigen Pionierunternehmen in den frühen 1950er Jahren entwickelt wurden. Obwohl die Spracherkennungstechnologie eine lange Geschichte hat und in den letzten zehn Jahren in intelligenten Verbrauchergeräten weit verbreitet war, ist die Spracherkennung immer noch eine der abstrakteren Technologien auf dem heutigen Markt. Dies liegt daran, dass verschiedene Spracherkennungstechnologien Bereiche wie Informatik, Computerlinguistik und Mathematik/Statistik abdecken und große Mengen an Eingaben aus jedem Bereich erfordern, um genaue Sprach-zu-Text-Ergebnisse zu erhalten.

Auf (sehr) hohem Niveau muss eine bestimmte Audiodatei zunächst vorverarbeitet werden, um ihre Qualität zu optimieren, damit die Spracherkennungstechnologie ihre grundlegendsten Aufgaben erfüllen kann. Dieses wird dann in kleinere Komponentensignale zerlegt und sortiert. Diese sortierten Signale müssen klein genug sein, damit ein mathematisches Modell sie bestimmten Phonemen zuordnen kann (sprachspezifische Laute, die sich zu einem Wort zusammenfügen; z. B. „eeee“ oder „ahhh“-Rauschen), was bei der Zuordnung dieser Phrasen oder Sätze hilft Sprachen werden verglichen. Letztendlich ist das Ziel eines Spracherkennungsdienstes einfach: Erraten Sie so genau wie möglich, welche Wörter in aufgezeichneten Audiodaten verwendet wurden, und verbessern und erweitern Sie die Sprachdatenbank kontinuierlich, bis die Vermutungen ein akzeptables Maß an Genauigkeit erreichen.

Dieses komplexe und inhärent begrenzte Informationsschätzsystem macht selbst die grundlegendsten Spracherkennungsdienste wie Sprache und Dialekt von der Audioqualität abhängig. Variationen in der Sprache, im Akzent, im Vokabular und das Vorhandensein von Hintergrundgeräuschen schaffen Grenzen, die für ein einzelnes Speech-to-Text-Modell nur schwer zu überwinden sind. Darüber hinaus spiegelt diese Komplexität die grundlegende Tatsache wider, dass Spracherkennungsdienste sehr ressourcenintensiv sind und für den Sprachvergleich auf große und wachsende Referenzdatensätze angewiesen sind und eine erhebliche Rechenleistung erfordern, um diese Datensätze effektiv zu nutzen. Zusammengenommen machen diese Faktoren das Training eines neuen Speech-to-Text-Modells zu einer gewaltigen Aufgabe.

Anwendungen der Spracherkennung

Die Spracherkennung ist größtenteils auf einige allgegenwärtige Innovationen im größeren Technologiemarkt zurückzuführen, insbesondere auf nahezu unbegrenzte. Mit dem Wachstum von Cloud-Computing-Datenspeicherlösungen, Sprache Anerkennung ist zu einem effizienten und nützlichen Verbraucherdienst geworden, den die Menschen mittlerweile in ihrem täglichen Leben erkennen. Menschen können direkt über Mobiltelefone, Festnetzanschlüsse und Bürogeräte kommunizieren und Gespräche führen, um automatisch die benötigten Informationen abzufragen, ihre Gedanken für die spätere Verwendung aufzuzeichnen und zu organisieren, sich Textnachrichten vorlesen zu lassen und vieles mehr.

Derzeit sind Verbraucheranwendungen nur die Spitze des Eisbergs der Anwendungen der Spracherkennungstechnologie. Fortschritte in den vielen miteinander verbundenen Prozessen der Spracherkennung bieten Möglichkeiten zur Erweiterung der Audiotranskriptionsausgabe und fördern eine zunehmende Anzahl kommerzieller Anwendungen für die Umwandlung von Sprache in Text. Es gibt viele solcher Beispiele im Umfeld von Menschen. Viele virtuelle Meeting-Plattformen nutzen mittlerweile Spracherkennungsdienste, um Teampräsentationen zu transkribieren (häufig in Echtzeit), und der resultierende Text kann bequem für alle gespeichert werden, die das Meeting möglicherweise verpasst haben. Chatbots nutzen Spracherkennung, um Menschen dabei zu helfen, auf ihren Telefonen Entscheidungen zu treffen, und die transkribierten Audiodaten dieser Gespräche können für etwas anderes verwendet werden: um in der Zukunft bessere Kundendienstpraktiken zu unterstützen. Vorträge, Interviews, Präsentationen und andere Vortragsveranstaltungen, an denen Personen teilnehmen können, können über persönliche Geräte aufgezeichnet und transkribiert werden, sodass die manuelle Transkription von Notizen entfällt. Beispielsweise können diese Transkriptionen durch NLP-Modelle (Natural Language Processing) verarbeitet werden, um bisher ungesehene (oder ungehörte) Erkenntnisse aus dem transkribierten Text zu gewinnen.

Es ist erwähnenswert, dass der skalierbare Speech-to-Text-Analysedienst auch nützliche Inhaltsmoderations- und SEO-Funktionen bietet – dieses Mal in einer Unternehmensdatenspeicherumgebung. Angesichts der Unzuverlässigkeit der von den meisten Kunden hochgeladenen Inhalte könnte die automatische Transkription von auf die Website hochgeladenen Audiodateien die Sprache der übergeordneten Audiodatei leicht anpassen, um sicherzustellen, dass sie für alle Hörer sicher ist (z. B. um zu sehen, ob sie höchst kontroverse Sprache, Hassreden usw. enthält). jede Form der Belästigung einer Einzelperson oder Gruppe). Dies reduziert die Arbeitsbelastung der Inhaltsprüfer erheblich und erhöht ihre Effizienz. Dieselben Transkriptionsdateien können auch zum Generieren nützlicher Schlüsselwörter verwendet werden, wodurch Audiodateien leichter durchsucht und aus großen Datenbanken abgerufen werden können.

Demonstration: CloudMersive Speech to Text API

Eine Möglichkeit, Spracherkennung als Dienst zu nutzen, ist die Einbindung der Cloudmersive Speech to Text API. Die API unterstützt derzeit MP3- oder WAV-Formate und nutzt ein Deep-Learning-Modell der künstlichen Intelligenz, um eine hochpräzise Audiotranskription bereitzustellen. Seine API-Parameter sind sehr einfach und erfordern lediglich eine Audiodatei und einen Cloudmersive-API-Schlüssel (den API-Schlüssel erhalten Sie, indem Sie sich auf der Website für ein kostenloses Konto anmelden, das bis zu 800 API-Aufrufe pro Monat generiert). Im Folgenden wird gezeigt, wie Sie API-Aufrufe mithilfe ergänzender Node.js-Codefragmente erstellen.

Der erste Schritt besteht darin, das Node.js SDK zu installieren. Dies kann durch Ausführen des folgenden Befehls erfolgen:

<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">npm</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">install</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">cloudmersive</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">-</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">speech</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">-</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">api</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">-</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">client</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">--</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">save</span>

Alternativ können Sie dem Paket den folgenden Codeausschnitt hinzufügen.

<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"dependencies"</span>: {<br><span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"cloudmersive-speech-client"</span>: <span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"^1.1.5"</span><br>}

Nachdem die Installation abgeschlossen ist, können Sie den folgenden Codeblock verwenden, um API-Aufrufe zu erstellen. An dieser Stelle müssen Sie sicherstellen, dass Sie die folgenden Parameter bereit haben:

(1) MP3- oder WAV-Audiodatei.

(2) CloudMersive API-Schlüssel.

<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">CloudmersiveSpeechApiClient</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">require</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'cloudmersive-speech-api-client'</span>);<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">defaultClient</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">CloudmersiveSpeechApiClient</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">ApiClient</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">instance</span>;<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">// Configure API key authorization: Apikey</span><br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Apikey</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">defaultClient</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">authentications</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'Apikey'</span>];<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Apikey</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiKey</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'YOUR API KEY'</span>;<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiInstance</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">new</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">CloudmersiveSpeechApiClient</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">RecognizeApi</span>();<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">speechFile</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">Buffer</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">from</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">fs</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">readFileSync</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"C:\temp\inputfile"</span>).<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">buffer</span>); <span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">// File | Speech file to perform the operation on.Common file formats such as WAV, MP3 are supported.</span><br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">var</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">callback</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">function</span>(<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">error</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>, <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">response</span>) {<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">if</span> (<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">error</span>) {<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">console</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">error</span>(<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">error</span>);<br>} <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">else</span> {<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">console</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">log</span>(<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'API called successfully. Returned data: '</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">+</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>);<br>}<br>};<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiInstance</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">recognizeFile</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">speechFile</span>, <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">callback</span>);

Damit ist der Aufbau der API ohne weitere Codeausschnitte abgeschlossen. Ein erfolgreicher API-Aufruf gibt eine Textresult-Zeichenfolge zurück, die die API-Transkriptionsergebnisse enthält. Es ist wichtig zu bedenken, dass die Audioqualität in der Eingabedatei einen erheblichen Einfluss auf die Fähigkeit der API hat, genaue Transkriptionen zu erstellen. Daher wird empfohlen, die Audioqualität vor der Implementierung dieses Vorgangs so weit wie möglich vorzuverarbeiten und zu optimieren.

Originaltitel: So nutzen Sie Speech-to-Text mit Node.js, Autor: Brian O'Neill

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Sprache mit Node.js in Text. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen