Page 1 of 1

[LinuxGurus] Windows API einer Spracherkennungssoftware unter Linux nutzen-Emu!?

Posted: 03. Nov 2006 23:12
by Bud Spencer
Hallo, bin neu im Forum und brauche auch drigend euer KnowHow. Tut mir leid, wenn es irgendwie gierig klingt.

Ich habe folgendes Problem und brauche einen Rat zur Machbarkeit bzw. ein paar Hinweise zu Tools mit denen ich folgendes realisieren kann:

Es soll eine Sprachsoftware (Windows-Programm), die einen Sound-Input durch einen Mikrofon an der Soundkarte verarbeitet und bestimmte Daten wiedergibt, unter Linux zum Laufen gebracht werden.

Dabei soll Wine NICHT zum Einsatz kommen, da Wine gerade solche Abbildungen von Hardwarezugriffen von Windows-Programmen auf Äquivalente in Linux nicht wirklich "sicher" durchführt. D.h., solche Zugriffe könnten ggf. nicht weiterverarbeitet werden, zu Fehlern und Absturz führen. Die Entwickler weisen selbst darauf hin. Wine ist gut für Spiele, aber professionelle Software muss stabil laufen.

Die Risiken der Nutzung von Wine ist demnach zu hoch, denn die Software muss auch auf verschiedenen Hardware-Plattformen laufen. Weiterhin ist der Leistungshunger für den Einsatzgebiet auf mobilen Geräten nicht vertretbar.

Es gibt keine Linux-Portierung der Software, wenn, dann nur mit horrenden Summen, wenn ihr versteht

Ich brauche nun dringend einen Rat bzw. ein Feedback über die Machbarkeit. Es ist denkbar, dass es irgendwo eine Software gibt, die dies "sicher" realisiert. Denn gerade Leute, die mit der Sounderstellung beschäftigt sind, könnten so ihre professionellen Sound-(Windows)-Programme unter Linux betreiben.

Für jeden Ratschlag bin ich sehr dankbar. Vllt. kann ich euch irgendwann auch mal aus der Patsche helfen oder anderwertig mich erkenntlich zeigen.

----

EDIT:
Ich gebe euch nun meine vollen Absichten bekannt, ich dachte, dass dies vllt. unnötig ist, aber es kommt leider zu Missverständnissen, also:

Es gibt eine fertige Spracherkennungssoftware von Nuance, eben Vocon 3200. Ich nutze die API dieser Spracherkennungssoftware, um es in eine andere, plattformunabhängige Software zu implementieren. Das Problem ist, dass Vocon 3200 auf Windows läuft und auch die API auf Windows abgestimmt ist.

Es gibt ein Windows-Beispielprogramm, welches Nutzen von der API zieht. Dieses Programm ist konsolenbasiert und nimmt beim Start lediglich die Sprache eines Nutzers auf. Dann erfolgt die Spracherkennung und ein Ergebnis wird auf dem Bildschirm präsentiert. Das Programm ist Standalone, d.h., die Installation der API wird nicht benötigt. Sie greift lediglich auf beiliegende Dlls zu. Dieses Programm möchte ich nun unter Linux zum Laufen bringen (mitsamt der beiliegenden API-dlls). Später kann ich das Programm zu meinen Zwecken umschreiben und in eine andere Software einbinden, das soll nicht das Problem sein. Mein Problem ist einfach nur, dass dieses Programm (und die API-dlls) auf Linux laufen.

Eine Portierung der API der Spracherkennungssoftware ist sehr zeitaufwendig und kostspielig.

Nun habe ich alle Infos preisgegeben. Wenn Fragen sind, bitte scheut nicht zu fragen.

Posted: 04. Nov 2006 0:55
by Janka
Wenn dir Wine bzw. deren Ableger WineX, Cedega und CrossoverOffice nicht reichen, und eine Virtualisierung (Vmware, qemu) nicht in Frage kommt, bleibt dir wohl nur die Neuimplementierung deiner Sound-Software.

Die Wine-Entwickler sind ja nicht zu blöd dazu, die Windows-API brauchbar nachzubilden. Wine ist aber eben *kein* Emulator, und deshalb sind direkte Portzugriffe etc. einfach BÄH! Das ist aber seit MS-Windows NT/2000 auch dort BÄH und solche Software kann man wohl getrost als "speziell", "altbacken" oder in vielen Fällen auch als "Müll" ansehen

Andererseits finde ich es schon sehr ungewöhnlich, dass eine Software direkt auf die Soundkarte zugreift anstatt auch unter MS-Windows den entsprechenden Treiber zu verwenden. Um welche ominöse Software geht es denn konkret?

Janka

Posted: 04. Nov 2006 11:27
by hjb
Hi,

vielleicht hilft dir das weiter:

http://www.pl-berichte.de/berichte/portierung.html

Grüße,
hjb

Posted: 04. Nov 2006 14:37
by Bud Spencer
Hi,vielen Dank für die Antworten.

@ Janka
Die Software nennt sich Nuance Vocon 3200. Ein direkter Hardwarezugriff erfolgt meines Wissens nicht. Sollte wahrscheinlich über entsprechende DirectX Elemente erfolgen. Ich muss auch dazu sagen, dass ich Berufseinsteiger bin, eher eine studentische Hilfskraft, und auch nicht viel Erfahrung habe.

@ hjb
Danke, werd es mal lesen

Was würdet ihr vorschlagen zu nutzen? Ich habe Vocon 3200 unter Windows und muss es sicher auf Linux zum laufen bringen, dabei muss die Hardware-Plattform wirklich egal sein. D.h. es muss möglichst auf allen problemlos laufen. Weiterhin muss es auch etwas schnell laufen, da der Einsatzgebiet auf mobielen Geräten beruht.

Das Programm ist nur konsolenbasiert, d.h. ohne grafische Oberfläche. Es wird lediglich der Audio-Input der Soundkarte genutzt, mehr nicht.

Könnt ihr mir für dieses Vorhaben eine gute Lösung empfehlen? Also, ich bin gegenüber Wine nicht abgeneigt, nur darf es keine Probleme bezüglich verschiedener Hardwareplattformen machen.

Posted: 04. Nov 2006 15:58
by Bud Spencer
Ich gebe euch nun meine vollen Absichten bekannt, ich dachte, dass dies vllt. unnötig ist, aber es kommt leider zu Missverständnissen, also:

Es gibt eine fertige Spracherkennungssoftware von Nuance, eben Vocon 3200. Ich nutze die API dieser Spracherkennungssoftware, um es in eine andere, plattformunabhängige Software zu implementieren. Das Problem ist, dass Vocon 3200 auf Windows läuft und auch die API auf Windows abgestimmt ist.

Es gibt ein Windows-Beispielprogramm, welches Nutzen von der API zieht. Dieses Programm ist konsolenbasiert und nimmt beim Start lediglich die Sprache eines Nutzers auf. Dann erfolgt die Spracherkennung und ein Ergebnis wird auf dem Bildschirm präsentiert. Das Programm ist Standalone, d.h., die Installation der API wird nicht benötigt. Sie greift lediglich auf beiliegende Dlls zu. Dieses Programm möchte ich nun unter Linux zum Laufen bringen (mitsamt der beiliegenden API-dlls). Später kann ich das Programm zu meinen Zwecken umschreiben und in eine andere Software einbinden, das soll nicht das Problem sein. Mein Problem ist einfach nur, dass dieses Programm (und die API-dlls) auf Linux laufen.

Eine Portierung der API der Spracherkennungssoftware ist sehr zeitaufwendig und kostspielig.

Nun habe ich alle Infos preisgegeben. Wenn Fragen sind, bitte scheut nicht zu fragen.

Posted: 04. Nov 2006 17:24
by Janka
Wenn das Programm die DirectX-Soundschnittstelle benutzt, sollten sich WineX und Cedega hervorragend eignen. Kannst du nochmal einen Link auf die Dokumentation geben, die dich zu deiner anfänglichen Annahme brachte, das ginge so nicht...

Janka

Posted: 04. Nov 2006 18:36
by Bud Spencer
Hallo,

danke für den Tipp. Wegen der Doku, ich schau mal genauer rein. Es ist bislang nur eine Vermutung, dass DirectX genutzt wird.

Folgende Fortschritte habe ich gemacht:

- Ich habe versucht unter Linux mit dem aktuellsten Wine das Programm zu starten.
- Es ist ein Fehler aufgetreten, dass die "msvcr80.dll" nicht gefunden worden ist.
- Daraufhin habe ich diese Datei aus den Windowssystemverzeichnissen rausgeholt und in den Programm-Ordner unter Linux kopiert.
- Wieder starte ich Wine. Diesesmal tritt der Fehler :

Code: Select all

Microsoft Visual C++ Runtime Library

Runtime Error!

Program: Z:\vocon\audioloop.exe

R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.
Ich habe nach diesem Fehler in Verbindung mit Wine gegoogelt und habe entdeckt, dass dieser Fehler u.a. auftritt, wenn man versucht .Net Applikationen mit Wine auszuführen. Für .Net Applikationen kann man eigentlich mit Mono ran, aber nutzt vermutlich das Spracherkennungs-Programm nicht nur .NET-Klassen, sondern auch die Win API. Es gibt aber keine Mono-Wine Kombination...

Ich habe aber Einiges darüber gelesen, dass man zumindest .NET Framework 1.1. halbwegs unter Wine installieren kann. Weiß jemand wie das geht bzw. hat jemand einen Link von euch, wo ich es nachlesen kann? Zur Zeit finde ich nichts bei Google.

Vielleicht ist der oben genannte Fehler nicht auf .NET zurückzufolgen. Vllt. hat jemand eine Ahnung, warum es nicht läuft...

Posted: 04. Nov 2006 19:07
by Janka

Posted: 04. Nov 2006 20:06
by Bud Spencer
Genau, habe ich auch gefunden, aber nicht so recht verstanden.
A while back I got the .NET framework to run a program in Wine. These notes may be slightly out of date, so feel free to update them with your experience.

A better way to support .NET programs would be to integrate with Mono. This could be done by creating a wine version of mscoree.dll.

Anyway, here's some notes on what I did:

Notes on getting the .NET framework to install.

1. Install DCOM95, IE6.
2. Winver=win2k, msi,msiexec=b, install netfx.msi
3. Add the following key:

Code: Select all

[Software\\Microsoft\\.NETFramework] 1101351980
"InstallRoot"="C:\\Windows\\Microsoft.NET\\Framework\\"
Move some files round:

Code: Select all

 move files in Win/* to Windows/*
 cd Windows/Microsoft.NET/Framework/
 mkdir v1.1.4322
 cp -R Framework/URTInstallPath/* v1.1.4322/
 wine .cxoffice/dotwine/fake_windows/Windows/Microsoft.NET/Framework/v1.1.4322/RegAsm.exe c:\\Windows\\System\\mscoree.dll
Manually added the following key to the registry:

Code: Select all

[Software\\Classes\\CLSID\\{E5CB7A31-7512-11D2-89CE-0080C792E5D8}\\InprocServer32] 1101368247
@="c:\\windows\\system\\mscoree.dll"
1.) Welche Versionen von DCOM95, IE6
2.) Was bedeutet "Winver=win2k, msi,msiexec=b, install netfx.msi"
3.) Wo soll ich die Schlüssel setzen

Kenne mich auch nicht so doll mit Wine aus.

Posted: 04. Nov 2006 21:39
by Janka
Naja, diese Fragen solltest du am besten auf der Wine-Mailingliste stellen. Dafür ist die ja da.

Janka