wlitke / translator

Translator application
2 stars 0 forks source link

Ermögliche die Bestimmung des Sound-Eingangs- und Ausgangskanals #11

Closed wlitke closed 1 year ago

wlitke commented 1 year ago

Momentan verwendet die App das Mikrofon als Eingangs-Kanal und die reguläre Soundausgabe als Ausgangs-Kanal. Um die App im komplexeren Umfeld (Soundkarte mit mehreren Ein- und Ausgängen) verwenden zu können, sollten die verfügbaren Eingangs- und Ausgangs-Kanäle beim Programmstart ermittelt und zur Auswahl gestellt werden.

Implementierungs-Hinweis: Stelle die ermittelten Eingangs- und Ausgangs-Kanäle als nummerierte Liste dar und lass den Benutzer die Nummer mit dem gewünschten Eingangs- bzw. Ausgangs-Kanal eingeben.

eppstephan commented 1 year ago

Das Auslesen der Device IDs funktioniert scheinbar (NAudio). Der Eingang/die Eingabe über die ausgelesene ID funktioniert (Mikrophone). Aber: Der Ausgang/die Ausgabe über die ausgelesene ID (Lautsprecher) funktioniert nicht.

AudioConfig.FromMicrophoneInput("{0.0.1.00000000}.{aa1b986d-6bad-47a8-8906-884b5da53905}") funktioniert AudioConfig.FromSpeakerOutput("{0.0.1.00000000}.{6b02cf3b-9c78-4114-8e6f-69443d227202}") funktioniert nicht

AudioConfig.FromDefaultSpeakerOutput() funktioniert auch, nur ist das ja wieder ohne spezielle ID. @wlitke Hast du eine Idee?

eppstephan commented 1 year ago

Das Auslesen der IDs hat nicht richtig funktioniert. Die ID, die eigentlich nötig ist, wurde nicht erkannt. Mit {0.0.0.00000000}.{17e63a9c-9a80-44d8-a8ee-2f6cacaf3879} klappt es. Habe diese ID jetzt über den Geräte-Manager ausgelesen.

wlitke commented 1 year ago

@eppstephan Wie telefonisch besprochen, werde ich mir das mal näher ansehen.

eppstephan commented 1 year ago

@wlitke Ich habe schon mal die Logik zum Konsumieren der Device IDs committed, die wir ja sowieso brauchen, egal, ob der Benutzer die IDs über die Konsole wählt oder sie in die config einträgt (und sie dazu aus dem Geräte-Manager kopiert).

wlitke commented 1 year ago

@eppstephan Also irgendetwas ist ganz faul. Ich habe nun eine ganze Weile recherchiert und verschiedene Tests gemacht. Die momentane Implementierung bringt bei mir leider gar keine Ausgabe mehr zustande. Selbst wenn ich auch nur eine ganze simple statische Ausgabe erreichen möchte, geschieht gar nichts. Auch nicht bei Nutzung von "AudioConfig.FromDefaultSpeakerOutput". Sobald die Funktion "await synthesizer.SpeakTextAsync" aufgerufen wird, läuft der Prozess in eine Blockade. Bisher habe ich noch nicht herausgefunden was das genau verursacht, bleibe jedoch am Ball.

eppstephan commented 1 year ago

@wlitke Das Problem, dass gar nichts mehr ausgegeben wird, hatte ich gestern auch, nachdem ein Windows Update installiert wurde. Egal wie, die Ausgabe ging nicht mehr. Mit dem Update hatten sich bei mir auch die IDs geändert. Ich habe dann das Update deinstalliert und nochmal installiert und neu gestartet, dann ging es mit Aktualisierung der IDs wieder.

wlitke commented 1 year ago

@eppstephan Ich habe jetzt nochmal das Text-To-Speech Beispiel von Microsoft umgesetzt und kann weiterhin kein funktionierendes Ergebnis produzieren. Der untenstehende Fehler wird geworfen. Ich werde nun noch spezifischer auf Fehlersuche gehen.

Reason=Error
ErrorCode=ServiceTimeout
ErrorDetails=[USP error: timeout waiting for the first audio chunk]
wlitke commented 1 year ago

@eppstephan Wir sind nicht einzigen, die diesen Fehler haben. Das Problem ist seit einigen Tagen bekannt und ist tatsächlich auf ein Windows Update zurückzuführen (siehe Links unten). Microsoft arbeitet bereits mit Hochdruck an einer Problemlösung. Ich schlage vor, dass wir die Behebung des Fehlers abwarten und dann mit der Entwicklung fortfahren. Solange das nicht funktioniert, ist eine Fortsetzung wenig sinnvoll.

eppstephan commented 1 year ago

@wlitke https://github.com/Azure-Samples/cognitive-services-speech-sdk/issues/1692 wurde geschlossen, obwohl die Lösung nicht funktioniert. Habe KB5019509 manuell installiert, die Ausgabe geht dennoch nicht (habe es mal mit dem JDK versucht anstatt mit .NET, allerdings der selbe Fehler).

Reason=Error
ErrorCode=ServiceTimeout
ErrorDetails=USP error: timeout waiting for the first audio chunk

Wie wollen wir weiter vorgehen? Weiter warten? Hatte überlegt, ob man das Auslesen der IDs nicht doch schon versuchen könnte, jedoch habe ich es bisher nicht vollständig lösen können, dass wirklich alle IDs angezeigt werden.

wlitke commented 1 year ago

@eppstephan Juhu, bei mir funktioniert der folgende Windows 10 Patch, womit die Sprachausgabe wieder wie erwartet funktioniert: https://www.catalog.update.microsoft.com/Search.aspx?q=KB5020435

Das Gegenstück für Windows 11 wird mit folgendem Patch bereitgestellt: https://www.catalog.update.microsoft.com/Search.aspx?q=KB5020387

Bitte führe mal den Download und die Installation durch und teste es erneut.