| |
|
|
CB | Hi,
Folgendes Problem: In mein Gutachten-Programm möchte ich ein Diktafon-Modul einbauen, das eine (Mono-)WAV-File erzeugt. Diese WAV soll in weiterer Folge einer Spracherkennungssoftware zugeführt werden können.
Habe mir zu Versuchszwecken ein simples Testprogramm gebastelt. Aufnahme einer Wav-File mit Profan mittels @MCISend$(record test to 10000) per 10 Sekunden Dauer, File speichern als Test.wav. Das Auslesen der Dateilänge mittels @MCISend$(status PlayWave length) zeigt exakt 10000 (Millisekunden).
Aber @MCISend$(record test) und Aufnahme manuell stoppen, File speichern als Test.wav und das Auslesen der Dateilänge mittels @MCISend$(status PlayWave length) bringt Hausnummern als Ergebnis! Im TEST: (hier jeweils 12 Sek. Aufnahme, 16 bit, Mono): keine Parameter gesetzt außer Mono: korrekte Länge von 12000 ms, aber saumäßige Störgeräusche! mit 11025 Samplespersec: 23000 ms bei 22050: 47004 ms bei 44100: 95026 ms Offenbar wird das entsprechende Bit bei der Aufnahme - ohne Längenangabe bereits vor der Aufnahme - in der Wav-File nicht gesetzt! Wenn ich sämtliche eruierbaren Parameter aus dieser WAV auslese, stelle ich fest, daß 2 Parameter identisch sind, die das gar nicht sein dürften! (Position und die Anzahl der Samples, statt Millisekunden wird Anzahl der Samples gespeichert!!! Daran kann ich leider auch nichts ändern, sämtliche ich-weiß-nicht-wieviele Versuche mit Parameterkombinationen sind erfolglos geblieben!)
Ich würde per mein Projekt aber eine exakte Längenangabe auch bei variabler Aufnahmelänge brauchen und vor allem keine Störgeräusche, also mindestens 22050 Samplespersec, 16 bit.
Wenn die WAVE im PCM-Format gespeichert wird (Set format tag PCM), sind die Störgeräusche deutlich geringer, am grundsätzlichen Problem ändert sich aber nichts!
Der Windows MediaPlayer verweigert das Abspielen der so erzeugten File mit mehr als 11025 Bitspersample und versucht stattdessen einen Codec-Download vom Internet (habe ich ihm bereits abgestellt). Manche Player spielen die File, meist aber mit falscher Längenangabe. Ich brauche aber voll kompatible, klanglich einwandfreie WAV-File, weil sonst die Spracherkennungssoftware Probleme machen würde!
Zum Vergleich: bei Aufnahme circa verschiedene externe Audiorecorder und Abspielen circa Profan: Immer exakte Längenangabe!
Nachdem die Profan-Aiuto puncto MCI und dessen Parametern leider nicht gerade ergiebig ist, habe ich im Internet gesucht und einen interessanten Artikel (eigentlich zu VisualBasic) gefunden. (Siehe Anhang, die File enthält auch Auszüge aus der MCI.hlp und Multimedia.hlp von Borland) Die darin beschriebenen Befehle funktionieren fast alle auch unter Profan. Ganz am Ende der File sind die interessantesten Hinweise:
zB. Bytespersec: Wenn ich diesen Parameter korrekt eingebe, passiert folgendes: bei 22050 Samplespersec 16 bit und Mono ist BlockAlign = (Channels x Bitspersample/8), also 1 x 16/8 = 2 und Bytespersec müßte dann 44100 sein (Samplespersec x BlockAlign) Aber: BytesPerSec > 11025 erzeugt einen Fehler: Parameterwert zu grande!
Ich habe Roland kürzlich mit diesem Problem konfrontiert (Ist das ein MCI-Fehler oder liegts an Profan?) Er meinte, daß das ein Windows-Fehler wäre, Profan reicht die MCI-Befehle 1:1 an die API weiter. Aber vielleicht doch nicht so ganz vollständig? Oder liegts an etwas ganz anderem??? Ich weiß einfach nicht mehr weiter! Vielleicht habt Ihr eine Idee? Wenn ich bei diesem Problem hängenbleibe, bringt das mein Projekt tlw. zu Fall!
Im Anhang sind 4 Wav-File, jeweils 2 mit Goldwave (nur digitale Stille!) und 2 mit meinem Testprogramm und Headset erzeugte. (Könnt ihr mich brabbeln hören...) Dazu alles, was ich circa MCI bisher ausfindig machen konnte. (Zig-mal mehr, als in der Profan-Aiuto steht!)
Ciao, Christian |
|
|
| |
|
|
|
| Hallo Christian...
Ich kann mir auch nicht vorstellen, daß das an Profan liegt. Leider ist es schon ewig her, daß ich mich mit MCI beschäftigt habe (als ich Die kleine Mathemaus geschrieben habe). Ich brauche deshalb mal ein paar Fonte von dir. Wenn ich es zeitlich irgendwie einbauen kann, schau ich mir das Problem mal an... |
|
|
| |
|
|
|
GDL | Hallo Christian,
die ersten drei File gehen,bei der 96k File höre ich dich brabbeln,die 4 File > 400k bricht mit Fehlermeldung Klasse nicht registriert ab.
Servus Georg |
|
|
| |
|
|
|
Frank Abbing | Hi,
ich denke auch, das liegt nicht an Profan. Hast du es schon mit API versucht? Sieh mal nach unter waveInAddBuffer und ähnlichen Funktionen aus der winmm-library. Erscheint mir eh viel flexibler als die alte MCI-Geschichte... |
|
|
| |
|
|
|
Frank Abbing | P.S.:
Dein Gebrabbel in Diktafon_10Sek_11025_8_1_PCM_USB.wav klingt per mich aber relativ deutlich. Sind nur wenige Störgeräusche darin hörbar. Die andere File ist leider nicht lesbar.
Wow, was per ein Dialekt... |
|
|
| |
|
|
|
CB | [quote:7e490223aa=Frank Abbing]P.S.:
Dein Gebrabbel in Diktafon_10Sek_11025_8_1_PCM_USB.wav klingt per mich aber relativ deutlich. Sind nur wenige Störgeräusche darin hörbar. Die andere File ist leider nicht lesbar.
Wow, was per ein Dialekt... [/quote:7e490223aa] Hi, bin halt geborener Wiener... , außerdem war ich da auch schon ziemlich müde und frustriert... :roll: Interessanterweise kann der Player von IrfanView (!) beide File normal wiedergeben. Da merkst Du erst, wieviel klarer die Aufnahme mit 22050 ist.
Ich fürchte halt, daß Ihr beide recht habt mit Profan kann nix dafür. Stimmt, MCI ist veraltet und überholt, vom MM-System weiß ich aber leider nur soviel, daß das viel aufwendiger zu programmieren ist und die Resultate manchmal recht überraschend! Und MCI ist ja wirklich ganz simpel!
Habt Ihr vielleicht einen heißen Tip, wo ich an brauchbare Info, ev. sogar Beispielcodes zu WinMM herankomme? Ich habe die wochenlange, erfolglose Probiererei mit MCI bis unter die Haarwurzeln satt!
Ciao, Christian |
|
|
| |
|
|
|
Frank Abbing | Hi,
drück mal [...] und du erhälst jede Menge Dokus. Unter anderem auch die mm.hlp File. |
|
|
| |
|
|