Voicefile aufnehmen per Browser – mit PHP und JavaScript

Ich beschäftige mich aktuell ein wenig mit dem Voice-First Ansatz. Hierbei stolpere ich ständig über die unterschiedlichen Qualitäten der Speech to Text Anbieter. Die im Internet auffindbaren Benchmarks der einzelnen Anbieter sind meist auf der englischen Sprache und für Deutsch wenig Aussagekräftig. Um einen eigenen Benchmark durchführen zu können benötigt man eine große Datenbasis an Sprachfiles und Transkriptionen der darin befindlichen Texte. Ein Voicefile aufnehmen ist über den Browser gar nicht so kompliziert. Also habe ich mich hingesetzt und fix ein kleines Script geschrieben welches mich beim Aufbau einer “eigenen Datenbasis” ein wenig unterstützen soll.

Warum ein Voicefile aufnehmen?

Zur Durchführung eines Benchmarks unterschiedlicher Speech to Text Anbieter ist eine breite Datenbasis wichtig. Zu diesem Zweck werden Aufnahmen von möglichst vielen Personen benötigt. Wichtig ist hierbei nun das nicht nur die Aufnahmen vorliegen, sondern klar ist, welche Datei welchen Text beinhaltet. Um nun nicht alle Dateien einzeln anhören zu müssen kam die Überlegung auf, dass es sinnvoll sein könnte, die zu sprechenden Texte vorzugeben.

Wie funktioniert das Voicefile aufnehmen?

Somit war die Idee zum WebVoiceRecorder geboren. Die Idee ist recht einfach:

  • über einen Adminbereich können User angelegt werden
  • jedem User kann eine Liste von zu sprechenden Texten zugeordnet werden
  • nachdem ein User sich einloggt stimmt er den Datenschutzbestimmungen zu (Nutzung der Files)
  • der Nutzer bekommt den zu sprechenden Text angezeigt
  • die Aufzeichnung erfolgt direkt über den Browser
  • das Voicefile wird auf dem Server abgelegt
  • ein Export (ToDo) der gesprochenen Daten zum Label Studio unterstützt beim Labeln der Daten

öffentliches Projekt bei Github

Bei der Suche geeigneter JavaScript Libraries zur Aufzeichnung eines Mikrofon-Streams über den Browser bin ich auf recorder.js gestoßen. Dieses Plugin stellt die Kernfunktionalitäten meiner kleinen Anwendung bereit und ist unter der MIT-Lizenz veröffentlicht. Also entschloss ich mich dazu auch mein Script unter derselben Lizenz auf Github zu veröffentlichen:

WebVoiceRecorder - Github Project

Überschaubarer Aufwand – großer Nutzen

Mit der gesamten Implementierung dieser Funktion habe ich mich in Summe nur gerade mal knapp 2 Stunden beschäftigt. Der Aufwand war also in der Tat überschaubar. Normalerweise setze ich weniger auf PHP als Programmiersprache, für solch kleine Dinge schätze ich die Sprache jedoch sehr.

Im nächsten Schritt versuche ich das Script an das Label Studio anzubinden und die Daten vorgelabelt in die Überprüfung zu geben. Die Scripte für den STT-Benchmark werden dann auf dieser Datenbasis aufsetzen. Der eigentliche Benchmark der Anbieter ist dann im Grunde, rein technisch gesehen, nur noch Fleißarbeit.

OpenSource Projekt auf Github veröffentlicht

Wer Interesse an dem kleinen Script hat findet den gesamten Quelltext auf Github unter https://github.com/tschiffler/WebVoiceRecorder. Verbesserungsvorschläge und Erweiterungen werden natürlich gerne (am liebsten per Pull-Request) angenommen und mit integriert 🙂

Artikel teilen

This article was written by Thomas Schiffler

Alles was mit IT zu tun hat steht bei mir hoch im Kurs. Hierbei dreht sich vieles um Java, Python oder auch mal PHP. Unser Zuhause ist mit diversen Raspberry PIs ausgestattet mit welchen ich versuche unser Leben durch etwas Automatisierung ein wenig smarter zu gestalten. Hierbei möchte ich die Technik und die dahinter eingesetzten Tools / Frameworks verstehen und nicht einfach nur Anwenden. Ich selbst bezeichne mich als ITler aus Leidenschaft :) Seit 2020 ist das Thema Chatbot / Voicebot / Conversational.ai in meinen Focus gerückt. In diesem Bereich investiere ich gerade viel Zeit.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert