Hallo, zukünftige Entwickler von Sprach-Apps! Heute begeben wir uns auf eine spannende Reise und entwickeln eine Sprachlernanwendung, die Benutzern dabei hilft, ihre Aussprache zu perfektionieren. Wir werden eine Reihe nützlicher Instruments wie DeepSpeech für die Konvertierung von Sprache in Textual content, Word2Vec zum Einbetten phonetischer Transkriptionen und Pinecone zum Speichern und Durchsuchen dieser Einbettungen verwenden. Schnappen Sie sich additionally Ihre Programmierhandschuhe und legen Sie los!
Lassen Sie uns zunächst über die Spracherkennung sprechen. Unser bevorzugtes Device ist DeepSpeech von Mozilla, eine Deep-Studying-basierte Speech-to-Textual content-Engine (STT). Es ist Open Supply, was bedeutet, dass Sie es frei verwenden können, und es basiert auf einer riesigen Menge mehrsprachiger Daten. Perfekt für unsere Sprachlern-App!
DeepSpeech verwendet LSTM-Netzwerke (Lengthy Quick Time period Reminiscence), eine Artwork wiederkehrendes neuronales Netzwerk (RNN), das verhindert, dass ältere Signale während der Verarbeitung allmählich verschwinden. Ordentlich, oder?
Denken Sie jedoch daran, dass beim Einspeisen von Audio in DeepSpeech das Audio in einem bestimmten Format vorliegen muss: 16-Bit, 16 kHz, Monokanal-WAV-Dateien. Möglicherweise müssen Sie Ihr Audio zuerst in dieses Format konvertieren.
Hier ist ein einfaches Beispiel, wie Sie DeepSpeech verwenden können:
import deepspeech
model_file_path = 'deepspeech-0.9.3-models.pbmm'
mannequin = deepspeech.Mannequin(model_file_path)
stream = mannequin.createStream()
fin = wave.open('audio.wav', 'rb')
frame_rate = fin.getframerate()
frames = fin.getnframes()
buffer = fin.readframes(frames)
stream.feedAudioContent(np.frombuffer(buffer, np.int16))
textual content = stream.finishStream()
print(textual content)
In diesem Beispiel laden wir zunächst das vorab trainierte DeepSpeech-Modell. Anschließend öffnen wir unsere Audiodatei und speisen den Audioinhalt in das Modell ein. Das Modell gibt den transkribierten Textual content zurück.
Als nächstes benötigen wir einen Datensatz, der uns beim Erlernen der Aussprache hilft. Geben Sie den TIMIT-Datensatz ein. Dieses Korpus phonemisch und lexikalisch transkribierter Sprache von Sprechern des amerikanischen Englisch ist perfekt für unsere App zum Üben der Aussprache. Es bietet eine große Auswahl an Aussprachen und macht unsere App robuster und vielseitiger.
Nachdem wir nun unseren Datensatz haben, wandeln wir die Sprache in phonetische Transkriptionen um. Hierzu verwenden wir die g2p-en-Bibliothek. Diese Bibliothek verwendet die phonetische Transkription ARPABET, die auf der englischen Rechtschreibung basiert. Jedes Phonem wird durch eine Reihe von einem oder zwei Buchstaben dargestellt, was es einfacher macht, die Aussprache des Benutzers mit der richtigen zu vergleichen.
from g2p_en import G2p
g2p = G2p()
textual content = "instance textual content"
out = g2p(textual content)
print(out)
In diesem Beispiel initialisieren wir zunächst die G2p-Klasse und wandeln dann unseren Textual content in phonetische Transkriptionen um.
Nachdem wir die phonetischen Transkriptionen konvertiert haben, wandeln wir sie mit Word2Vec in Vektoren um. Word2Vec ist eine Methode, die Textual content in numerische Kind umwandelt, perfekt für tiefe neuronale Netze. Es verarbeitet Textual content, indem es Wörter „vektorisiert“ und verteilte numerische Darstellungen von Wortmerkmalen erstellt, was uns hilft, Assoziationen zwischen Wörtern herzustellen.
from gensim.fashions import Word2Vec
sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
mannequin = Word2Vec(sentences, min_count=1)
print(mannequin.wv['cat'])
In diesem Beispiel definieren wir zunächst unsere Sätze und trainieren dann unser Word2Vec-Modell anhand dieser Sätze. Wir können dann den Vektor für jedes Wort erhalten, indem wir darauf zugreifen mannequin.wv[word]
.
Sobald wir unsere phonetischen Transkriptionsvektoren haben, speichern wir sie in einer Vektordatenbank. Hierzu verwenden wir Pinecone, eine Datenbank, die für Anwendungen des maschinellen Lernens entwickelt wurde. Es ermöglicht Ihnen das Speichern, Durchsuchen und Verwalten hochdimensionaler Vektoren, ist cloudnativ und für die Verarbeitung großer Datenmengen konzipiert.
Denken Sie daran, „YOUR_API_KEY“ durch Ihren tatsächlichen Pinecone-API-Schlüssel zu ersetzen. Sie können diesen Schlüssel erhalten, indem Sie sich auf der Pinecone-Web site anmelden.
import pinecone
pinecone.init(api_key="YOUR_API_KEY")
index_name = "pronunciation-embeddings"
pinecone.create_index(index_name, metric="cosine")
upsert_result = pinecone.upsert(index=index_name, gadgets=[("example", [0.1, 0.2, 0.3, 0.4])])
In diesem Beispiel initialisieren wir Pinecone zunächst mit unserem API-Schlüssel und erstellen dann einen Index. Anschließend fügen wir einen Beispielvektor in den Index ein.
Der letzte, aber nicht zuletzt wichtige Schritt besteht darin, dem Benutzer Suggestions zu geben. Wir möchten konstruktives und hilfreiches Suggestions geben, das ihnen hilft, sich zu verbessern. Dies könnte so einfach sein, dass man ihnen die phonetische Transkription ihrer Aussprache und die korrekte Aussprache zeigt. Aber warum hier aufhören? Wir könnten ein Bewertungssystem integrieren, das eine Bewertung der Aussprache basierend darauf liefert, wie nahe ihre Aussprache an der richtigen Aussprache liegt. Dies gibt den Benutzern ein greifbares Ziel, das sie anstreben können.
Hier ist eine Beispielfunktion, die Ihnen helfen könnte, zu verstehen, wie Sie Ihren Feedbackmechanismus strukturieren:
def give_feedback(user_vector, correct_pronunciation_id):
# Assuming we now have capabilities to transform vectors to transcriptions and to calculate similarity rating
# Get the person's transcription
user_transcription = vector_to_transcription(user_vector)
# Get the right transcription
correct_transcription = id_to_transcription(correct_pronunciation_id)
# Evaluate the transcriptions and provides suggestions
if user_transcription == correct_transcription:
return "Excellent! You nailed it!"
else:
# Calculate the pronunciation rating (that is only a easy instance, you can use a extra superior comparability methodology)
rating = get_similarity_score(user_vector, correct_pronunciation_id)
return f"Not fairly proper. Your rating was {rating}. Hold working towards!"
Bitte beachten Sie, dass es sich bei dem oben genannten Code um einen Pseudocode handelt, den Sie möglicherweise implementieren müssen vector_to_transcription
, id_to_transcription
Und get_similarity_score
Funktionen basierend auf den Anforderungen Ihrer Anwendung.
Und das ist ein Wrap! Wir haben erläutert, wie Sie mithilfe von Spracherkennung, Deep Studying und Vektordatenbanken eine Sprachlern-App erstellen. Sie kennen sich jetzt mit DeepSpeech, dem TIMIT-Datensatz, phonetischen Transkriptionen, Word2Vec und Pinecone aus.
Denken Sie daran, dass die Reise von tausend Meilen mit einem einzigen Schritt beginnt. Den ersten Schritt haben Sie bereits getan, additionally machen Sie weiter! Sie sind auf dem Weg, ein Spracherkennungsprofi zu werden. Viel Spaß beim Codieren!