Thursday, November 13, 2008

Second go: SimpleDictation in Wine

ok.
  • Fresh VM in VirtualBox
  • Fresh XP
  • Crack with WPAjobby
  • Overwrite with fresh Vista
  • Upgrade to SP1
  • Install VS08
  • Copy over SimpleDictation c++ sample from WindowsSDK
  • Compile release build
Now try to get that running in Wine:
  • rm -r /home/spud/.wine
  • save 'winetricks' http://www.kegel.com/wine/winetricks
  • chmod a+x winetricks
  • run it and install VC08 redist

  • Copy over from Vista ~/.wine/drive_c/windows/system32/Speech/*
    regsvr32 /Common/sapi.dll
  • copy over SimpleDict's Release build folder to ~/sd
  • spud@spud-laptop:~/sd$ wine SimpleDictation.exe
spud@spud-laptop:~/sd$ wine SimpleDictation.exe
fixme:advapi:RegisterTraceGuidsW 0x34b0f75c 0x34b952d8 0x34ae1c2c 1 0x32f0b4 (null) (null) 0x34b952e0
fixme:wtsapi:WTSRegisterSessionNotification Stub 0x500cc 0x00000000
wine: Unhandled page fault on read access to 0x00000000 at address 0x40278c (thread 0023), starting debugger...
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x0040278c).
err:dbghelp_msc:pe_load_debug_directory Got a page fault while loading symbols
Register dump:
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
EIP:0040278c ESP:0032f94c EBP:0032f9ac EFLAGS:00210216( - 00 -RIAP1)
EAX:00000000 EBX:7ee2f0cc ECX:0032fe74 EDX:00000000
ESI:00000000 EDI:000300e4
Stack dump:
0x0032f94c: 00000000 00000000 00000000 0032fe74
0x0032f95c: 9dc13414 0032f970 7edfacd0 00000000
0x0032f96c: 00740c00 00740c00 7ee2f0cc 7ee2f0cc
0x0032f97c: 00740c00 0032fe5c 0032f9a4 7edff6df
0x0032f98c: 000300e4 ffffffeb 00000000 00740c00
0x0032f99c: 00743710 0032fef8 00402c60 00000001
Backtrace:
=>1 0x0040278c in simpledictation (+0x278c) (0x0032f9ac)
2 0x00402acf in simpledictation (+0x2acf) (0x0032f9c0)
3 0x7ee096ba WINPROC_wrapper+0x1a() in user32 (0x0032f9f0)
4 0x7ee0b4b8 in user32 (+0xab4b8) (0x0032fa30)
5 0x7ee0eec3 in user32 (+0xaeec3) (0x0032fa70)
6 0x7ed97277 DefDlgProcW+0x87() in user32 (0x0032faa0)
7 0x7ee096ba WINPROC_wrapper+0x1a() in user32 (0x0032fad0)
8 0x7ee09d9e WINPROC_wrapper+0x6fe() in user32 (0x0032fb10)
9 0x7ee0f15b in user32 (+0xaf15b) (0x0032fb50)
10 0x7edd06f1 in user32 (+0x706f1) (0x0032fbb0)
11 0x7edd47bd in user32 (+0x747bd) (0x0032fc10)
12 0x7edd4c2a SendMessageW+0x4a() in user32 (0x0032fc50)
13 0x7ed9cd0c in user32 (+0x3cd0c) (0x0032fe20)
14 0x7ed9f010 DialogBoxParamW+0x70() in user32 (0x0032fe40)
15 0x00402b85 in simpledictation (+0x2b85) (0x0032fe78)
16 0x00401e61 in simpledictation (+0x1e61) (0x0032ff08)
17 0x7b877c07 in kernel32 (+0x57c07) (0x0032ffe8)
0x0040278c: movl 0x0(%eax),%ecx
Modules:
Module Address Debug info Name (69 modules)
PE 400000- 408000 Export simpledictation
PE 34ae0000-34bfe000 Deferred sapi
PE 78520000-785c3000 Deferred msvcr90
ELF 7b800000-7b93b000 Export kernel32
\-PE 7b820000-7b93b000 \ kernel32
ELF 7bc00000-7bca9000 Deferred ntdll
\-PE 7bc10000-7bca9000 \ ntdll
ELF 7bf00000-7bf03000 Deferred
ELF 7e338000-7e34c000 Deferred wtsapi32
\-PE 7e340000-7e34c000 \ wtsapi32
ELF 7e45d000-7e471000 Deferred midimap
\-PE 7e460000-7e471000 \ midimap
ELF 7e471000-7e488000 Deferred msacm32
\-PE 7e480000-7e488000 \ msacm32
ELF 7e488000-7e54b000 Deferred libasound.so.2
ELF 7e55a000-7e58f000 Deferred winealsa
\-PE 7e560000-7e58f000 \ winealsa
ELF 7e58f000-7e5b6000 Deferred msacm32
\-PE 7e5a0000-7e5b6000 \ msacm32
ELF 7e5b6000-7e648000 Deferred winmm
\-PE 7e5c0000-7e648000 \ winmm
ELF 7e648000-7e72f000 Deferred oleaut32
\-PE 7e660000-7e72f000 \ oleaut32
ELF 7e757000-7e760000 Deferred libxcursor.so.1
ELF 7e760000-7e765000 Deferred libxfixes.so.3
ELF 7e765000-7e768000 Deferred libxcomposite.so.1
ELF 7e768000-7e76e000 Deferred libxrandr.so.2
ELF 7e76e000-7e776000 Deferred libxrender.so.1
ELF 7e776000-7e77b000 Deferred libxxf86vm.so.1
ELF 7e77b000-7e77e000 Deferred libxinerama.so.1
ELF 7e77e000-7e79e000 Deferred imm32
\-PE 7e780000-7e79e000 \ imm32
ELF 7e79e000-7e7a3000 Deferred libxdmcp.so.6
ELF 7e7a3000-7e7bb000 Deferred libxcb.so.1
ELF 7e7bb000-7e7bd000 Deferred libxcb-xlib.so.0
ELF 7e7bd000-7e7c0000 Deferred libxau.so.6
ELF 7e7c0000-7e8a7000 Deferred libx11.so.6
ELF 7e8a7000-7e8b5000 Deferred libxext.so.6
ELF 7e8b5000-7e8cd000 Deferred libice.so.6
ELF 7e8cd000-7e8d5000 Deferred libsm.so.6
ELF 7e8e4000-7e97d000 Deferred winex11
\-PE 7e8f0000-7e97d000 \ winex11
ELF 7e9cc000-7e9ed000 Deferred libexpat.so.1
ELF 7e9ed000-7ea17000 Deferred libfontconfig.so.1
ELF 7ea17000-7ea2c000 Deferred libz.so.1
ELF 7ea2c000-7ea99000 Deferred libfreetype.so.6
ELF 7ea99000-7eaac000 Deferred libresolv.so.2
ELF 7eabb000-7eada000 Deferred iphlpapi
\-PE 7eac0000-7eada000 \ iphlpapi
ELF 7eada000-7eb3f000 Deferred rpcrt4
\-PE 7eaf0000-7eb3f000 \ rpcrt4
ELF 7eb3f000-7ec4e000 Deferred ole32
\-PE 7eb60000-7ec4e000 \ ole32
ELF 7ec4e000-7eca2000 Deferred advapi32
\-PE 7ec60000-7eca2000 \ advapi32
ELF 7eca2000-7ed40000 Deferred gdi32
\-PE 7ecb0000-7ed40000 \ gdi32
ELF 7ed40000-7ee89000 Export user32
\-PE 7ed60000-7ee89000 \ user32
ELF 7efa9000-7efb4000 Deferred libnss_files.so.2
ELF 7efb4000-7efcc000 Deferred libnsl.so.1
ELF 7efcc000-7eff1000 Deferred libm.so.6
ELF 7eff6000-7f000000 Deferred libnss_nis.so.2
ELF b7ca1000-b7caa000 Deferred libnss_compat.so.2
ELF b7cab000-b7caf000 Deferred libdl.so.2
ELF b7caf000-b7dfe000 Deferred libc.so.6
ELF b7dff000-b7e17000 Deferred libpthread.so.0
ELF b7e26000-b7f5c000 Deferred libwine.so.1
ELF b7f5e000-b7f7a000 Deferred ld-linux.so.2
Threads:
process tid prio (all id:s are in hex)
00000008
00000009 0
0000000c
00000012 0
0000000e 0
0000000d 0
0000000f
00000015 0
00000014 0
00000011 0
00000010 0
00000016
00000017 0
00000022 (D) Z:\home\spud\sd\SimpleDictation.exe
00000025 0
00000024 0
00000023 0 <==
Backtrace:
=>1 0x0040278c in simpledictation (+0x278c) (0x0032f9ac)
2 0x00402acf in simpledictation (+0x2acf) (0x0032f9c0)
3 0x7ee096ba WINPROC_wrapper+0x1a() in user32 (0x0032f9f0)
4 0x7ee0b4b8 in user32 (+0xab4b8) (0x0032fa30)
5 0x7ee0eec3 in user32 (+0xaeec3) (0x0032fa70)
6 0x7ed97277 DefDlgProcW+0x87() in user32 (0x0032faa0)
7 0x7ee096ba WINPROC_wrapper+0x1a() in user32 (0x0032fad0)
8 0x7ee09d9e WINPROC_wrapper+0x6fe() in user32 (0x0032fb10)
9 0x7ee0f15b in user32 (+0xaf15b) (0x0032fb50)
10 0x7edd06f1 in user32 (+0x706f1) (0x0032fbb0)
11 0x7edd47bd in user32 (+0x747bd) (0x0032fc10)
12 0x7edd4c2a SendMessageW+0x4a() in user32 (0x0032fc50)
13 0x7ed9cd0c in user32 (+0x3cd0c) (0x0032fe20)
14 0x7ed9f010 DialogBoxParamW+0x70() in user32 (0x0032fe40)
15 0x00402b85 in simpledictation (+0x2b85) (0x0032fe78)
16 0x00401e61 in simpledictation (+0x1e61) (0x0032ff08)
17 0x7b877c07 in kernel32 (+0x57c07) (0x0032ffe8)

Monday, November 3, 2008

Contacting people about Linux Speech Recognition

I don't think I can manage this on my own. So I'm reaching out to the dev-community:

I've suggested a community project on SourceForge:
https://sourceforge.net/community/forum/topic.php?id=3973&page&replies=1#post-8990

I've talked it over with nshm on irc.freenode.net#cmusphinx and the Voxforge Maintainer, and RMS

I've started a thread on the Wine forum:
http://forum.winehq.org/viewtopic.php?p=14515#14515

I've also contacted WineBug, the maintainer of the Dragon NaturallySpeaking port to Wine
http://appdb.winehq.org/objectManager.php?sClass=version&iId=13563

Saturday, November 1, 2008

Continuous Speech Recognition for Linux

Hello people! Please help me out with this project!!! It'll benefit a lot of people.

Please go straight to 'Current Problem' near the end!

Objective
  • To create a FOSS Continuous Speech Recognition engine
  • Initially for Linux, ultimately crossplatform
  • A smartly designed GUI that finds the optimal balance between voice and hand input
This is a big project. Why am I pushing it? I have severe RSI. I _need_ speech recognition. And I _hate_ Windows. So I'm going to work towards creating it for Linux. I cannot do it on my own. My hands are fucked and besides I am a little stupid on Linux. Please muck in! We need more hands on board!

Why Vista Speech is shit
I hate the Vista speech recognition software. It makes me scream and yell. It was starting to damage my brain. The engine is great, but the interface is unbearable. Commands are intermingled with dictation. You dictate 'Fred was going to close the window'. And your window has gone! Designed by corporate fucking monkeys. I asked the Vista Speech team why it was so shit, and they said 'it's designed as a keyboard/mouse replacement. Not complement. Our specifications are _not_ to make an HCI optimally balanced between voice and hand.' Well this is my specification.

So, how to make continuous speech for Linux?
The FOSS community has CMU-Sphinx. It's the original speech engine. 20+ years ago, DARPA funded a department at CMU (Carnegie Mellon University) to do it. Vista Speech is accurate because they found and hired all the current Sphinx developers. Vista Speech is working off the Sphinx engine. Go to irc.freenode.net#cmusphinx and say hi to dhdfoo or nshm who seem to be the two most active maintainers right now. They're not always on, just hang awhile. I'm on as ohmu.

So we've got the engine... Why don't we have continuous speech?
Because it needs thousands of hours of training data. eg you need to record yourself saying 'Mary had a little lamb', feed it into the database together with the text. Do this for 1000 people at 10 hours each. Now Sphinx can chew on that data and make a decent engine. Nobody's done it. There's a current attempt at www.voxforge.com

The plan
  1. Use WINE to get Vista's Speech Engine operating in Linux
  2. Create a GUI that'll interface with this engine.
    The GUI will sporadically (unless the user disables the feature) send phrase-data to a central database (say VoxForge - I have contacted the maintainer and he is friendly)
  3. Once we have enough data, throw out the WINE-wrapped Vista Engine, and replace it with our own FOSS engine.
Where are we?
I have to contact the VoxForge maintainer again, and check that it's ok to pipe data to him. Shouldn't be a problem.

I've contacted RMS (Stallman), who says FSF will provide servers as long as they are not tarnished by non-free software. From the VoxForge guy: We may not need this.

I've contacted Nickolai (nshm on irc - Russian Sphinx guru) who is willing to adapt the Sphinx engine to accomplish stage 3.

Current Problem
Right now I need help with stage 1. Stage 1 is transferring Vista's speech recognition engine to Linux via wine. I have
  • Run Vista, examined the commandline behind the 'Speech Recognition' icon:
    %SystemRoot%\Speech\Common\sapisvr.exe -SpeechUX
    (I really just need the engine ported over, but if I can get this working in wine, that's engine + GUI - a good test the engine's ported ok)

  • Installed wine

  • Run winecfg, set global Applications -> 'Vista'

  • Copied relevant folders from VistaBox:
    /WINDOWS/Speech/* -> /(wine's C-Drive)/WINDOWS/Speech/*
    /WINDOWS/System32/Speech/* -> /(wine's C-Drive)/WINDOWS/System32/Speech/*

  • spud@spud-laptop:~/.wine/drive_c$ gedit SetPaths.bat
    ...and put in the following:
    set PATH=C:\WINDOWS

    set PATH=%PATH%;C:\WINDOWS\system32
    set PATH=%PATH%;C:\WINDOWS\system32\Speech\Engines\SR
    set PATH=%PATH%;C:\WINDOWS\system32\Speech\Engines\SR\en-US
    set PATH=%PATH%;C:\WINDOWS\system32\Speech\SpeechUX
    set PATH=%PATH%;C:\WINDOWS\system32\Speech\SpeechUX\en-gb
    set PATH=%PATH%;C:\WINDOWS\system32\Speech\SpeechUX\en-us

    set PATH=%PATH%;C:\WINDOWS\Speech\Common
    set PATH=%PATH%;C:\WINDOWS\Speech\Common\en-US
    set PATH=%PATH%;C:\WINDOWS\Speech\Engines\SR
    set PATH=%PATH%;C:\WINDOWS\Speech\Engines\SR\en-GB
    set PATH=%PATH%;C:\WINDOWS\Speech\Engines\SR\en-US
    set PATH=%PATH%;C:\WINDOWS\Speech\Engines\Lexicon\en-GB
    set PATH=%PATH%;C:\WINDOWS\Speech\Engines\Lexicon\en-US

    echo 'Paths set! Have a look!'
    PATH
  • Launch a DOS prompt
    spud@spud-laptop:~/.wine/drive_c$ wine cmd
    CMD Version 1.0

    C:\>SetPaths
    'Path set to:'
    PATH=C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS\system32\Speech\Engines\SR;C:\WINDOWS\system32\Speech\Engines\SR\en-US;C:\WINDOWS\system32\Speech\SpeechUX;C:\WINDOWS\system32\Speech\SpeechUX\en-gb;C:\WINDOWS\system32\Speech\SpeechUX\en-us;C:\WINDOWS\Speech\Common;C:\WINDOWS\Speech\Common\en-US;C:\WINDOWS\Speech\Engines\SR;C:\WINDOWS\Speech\Engines\SR\en-GB;C:\WINDOWS\Speech\Engines\SR\en-US;C:\WINDOWS\Speech\Engines\Lexicon\en-GB;C:\WINDOWS\Speech\Engines\Lexicon\en-US

  • C:\>sapisvr -fish
    C:\>fixme:heap:HeapSetInformation (nil) 1 (nil) 0
    err:ole:CoUninitialize Mismatched CoUninitialize

    Good! Should fail - param is wrong.

  • C:\>sapisvr -SpeechUX
    C:\>fixme:heap:HeapSetInformation (nil) 1 (nil) 0
    err:ole:CoGetClassObject class {1b2afb92-0b5e-4a30-b5cc-353db4f9e150} not registered
    err:ole:CoGetClassObject class {1b2afb92-0b5e-4a30-b5cc-353db4f9e150} not registered
    err:ole:create_server class {1b2afb92-0b5e-4a30-b5cc-353db4f9e150} not registered
    fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported
    err:ole:CoGetClassObject no class object {1b2afb92-0b5e-4a30-b5cc-353db4f9e150} could be created for context 0x17

  • Googling {1b2afb92-0b5e-4a30-b5cc-353db4f9e150} gives
    SpSapiServer Class
    C:\Program Files\Common Files\Microsoft Shared\Speech\sapi.dll
    thx to http://www.myplugins.info/guids/guid.php?guid=1B
    There's no \Speech in \Microsoft Shared\, but there's a sapi.dll in the files I copied:
    c:/windows/system32/Speech/Common/sapi.dll
    so I guess I should register it.
    spud@spud-laptop:~/.wine/drive_c$ wine regsvr32 c:/windows/system32/Speech/Common/sapi.dll
    fixme:advapi:RegisterTraceGuidsW 0x34b0f75c 0x34b952d8 0x34ae1c2c 1 0x32f934 (null) (null) 0x34b952e0
    Successfully registered DLL c:/windows/system32/Speech/Common/sapi.dll
    Now try again:
    spud@spud-laptop:~/.wine/drive_c$ wine ./windows/Speech/Common/sapisvr -SpeechUX
    fixme:heap:HeapSetInformation (nil) 1 (nil) 0
    fixme:advapi:RegisterTraceGuidsW 0x34b0f75c 0x34b952d8 0x34ae1c2c 1 0x32f4e8 (null) (null) 0x34b952e0
    err:ntdll:NtQueryInformationToken Unhandled Token Information class 26!
    fixme:ole:CoCreateInstance no instance created for interface {31e99ed0-6ad8-431b-ae3c-652d9e8c7832} of class {1b2afb92-0b5e-4a30-b5cc-353db4f9e150}, hres is 0x80070001
  • Seems to be looking better. No idea how to proceed from here tho! I tried registering all the dlls I imported thus, but have got tangled and I'm not sure it's even the way to go. 3 succeed. Several Here's the sticking point:
    spud@spud-laptop:~/.wine/drive_c$ wine cmd
    CMD Version 1.0

    C:\>regsvr32 c:/windows/system32/Speech/Common/sapi.dll
    fixme:advapi:RegisterTraceGuidsW 0x34b0f75c 0x34b952d8 0x34ae1c2c 1 0x33f934 (null) (null) 0x34b952e0
    Successfully registered DLL c:/windows/system32/Speech/Common/sapi.dll

    C:\>regsvr32 c:/windows/system32/Speech/SpeechUX/speechuxcpl.dll
    err:module:import_dll Library msvcrt.dll (which is needed by L"C:\\windows\\system32\\Speech\\SpeechUX\\speechuxcpl.dll") not found
    err:module:import_dll Library msvcrt.dll (which is needed by L"C:\\windows\\system32\\DUser.dll") not found
    err:module:import_dll Library DUser.dll (which is needed by L"C:\\windows\\system32\\Speech\\SpeechUX\\speechuxcpl.dll") not found
    Failed to load DLL c:/windows/system32/Speech/SpeechUX/speechuxcpl.dll

    C:\>regsvr32 c:/windows/system32/Speech/SpeechUX/SpeechUXPS.dll
    err:module:import_dll Library msvcrt.dll (which is needed by L"C:\\windows\\system32\\Speech\\SpeechUX\\SpeechUXPS.dll") not found
    Failed to load DLL c:/windows/system32/Speech/SpeechUX/SpeechUXPS.dll

    C:\>regsvr32 c:/windows/Speech/Common/sqmapi.dll
    wine: Call from 0x70d22a1e to unimplemented function KERNEL32.dll.InitializeCriticalSectionEx, aborting
    fixme:ntdll:RtlNtStatusToDosErrorNoTeb no mapping for 80000100
    Failed to load DLL c:/windows/Speech/Common/sqmapi.dll

    C:\>regsvr32 c:/windows/Speech/Common/DUser.dll
    wine: Call from 0x70d22a1e to unimplemented function KERNEL32.dll.InitializeCriticalSectionEx, aborting
    fixme:ntdll:RtlNtStatusToDosErrorNoTeb no mapping for 80000100
    Failed to load DLL c:/windows/Speech/Common/DUser.dll

    C:\>regsvr32 c:/windows/system32/Speech/SpeechUX/en-gb/SpeechUXres.dll
    DllRegisterServer not implemented in DLL c:/windows/system32/Speech/SpeechUX/en-gb/SpeechUXres.dll

    C:\>regsvr32 c:/windows/system32/Speech/SpeechUX/en-us/SpeechUXres.dll
    DllRegisterServer not implemented in DLL c:/windows/system32/Speech/SpeechUX/en-us/SpeechUXres.dll

    C:\>regsvr32 c:/windows/system32/Speech/Engines/SR/spsreng.dll
    fixme:heap:HeapSetInformation 0x560000 1 (nil) 0
    Failed to register DLL c:/windows/system32/Speech/Engines/SR/spsreng.dll

    C:\>regsvr32 c:/windows/system32/Speech/Engines/SR/spsrx.dll
    fixme:heap:HeapSetInformation 0x560000 1 (nil) 0
    Failed to register DLL c:/windows/system32/Speech/Engines/SR/spsrx.dll

    C:\>regsvr32 c:/windows/system32/Speech/Engines/SR/srloc.dll
    fixme:heap:HeapSetInformation 0x560000 1 (nil) 0
    Failed to register DLL c:/windows/system32/Speech/Engines/SR/srloc.dll

    C:\>regsvr32 c:/windows/system32/Speech/SpeechUX/SpeechUX.dll
    fixme:advapi:RegisterTraceGuidsW 0x6cd15f38 0x6cd20180 0x6cd019f4 1 0x32f8d0 (null) (null) 0x6cd20188
    fixme:advapi:RegisterTraceGuidsA 0x6ec16eb9 0x6ec265e8 0x6ec026b0 1 0x32f8cc (null) (null) 0x6ec265f0
    fixme:advapi:RegisterTraceGuidsA 0x6ec16eb9 0x6ec26608 0x6ec026c0 1 0x32f8cc (null) (null) 0x6ec26610
    wine: Call from 0x4b4775ab to unimplemented function USER32.dll.ChangeWindowMessageFilter, aborting
    wine: Call from 0x4b46d706 to unimplemented function msvcrt.dll._except_handler4_common, aborting
    :
    (this line about 700 times)
    :
    wine: Call from 0x4b46d706 to unimplemented function msvcrt.dll._except_handler4_common, aborting
    wine: Call from 0x4b46d706 to unimplemented function msvcrt.dll._except_handler4_common, aborting
    err:seh:setup_exception_record stack overflow 1968 bytes in thread 0027 eip b7d271e3 esp 00230b80 stack 0x230000-0x231000-0x330000
    This is becoming a hydra. First time round it complained about sqmapi.dll and DUser.dll not being present. So I've copied them across from Vista's /system32. I've placed a copy in wine/s /system32 as well as in the folder sapisvr resides. Yet on registering speechuxcpl.dll it's still complaining msvcrt.dll and DUser.dll cannot be found. msvcrt.dll is there! And I have copied DUser.dllthere! wtf?

    As for SpeechUX.dll - I reckon I really need to get this registered, as the command line I'm trying to execute is 'sapisvr -SpeechUX'. It is complaining about msvcrt.dll. So I'm copying a native one over from Vista's /system32 into the same folder as sapisvr.exe. I go to winecfg global app settings and add it as a native dll.

    OK just realized I have to exit and reenter the DosShell to effect settings from winecfg. Here's the new output.
    C:\> regsvr32 c:/windows/system32/Speech/SpeechUX/SpeechUX.dll

    err:module:import_dll Library msvcrt.dll (which is needed by L"C:\\windows\\system32\\Speech\\SpeechUX\\SpeechUX.dll") not found
    err:module:import_dll Library msvcrt.dll (which is needed by L"C:\\windows\\system32\\sqmapi.dll") not found
    err:module:import_dll Library sqmapi.dll (which is needed by L"C:\\windows\\system32\\Speech\\SpeechUX\\SpeechUX.dll") not found
    err:module:import_dll Library msvcrt.dll (which is needed by L"C:\\windows\\system32\\DUser.dll") not found
    err:module:import_dll Library DUser.dll (which is needed by L"C:\\windows\\system32\\Speech\\SpeechUX\\SpeechUX.dll") not found
    Failed to load DLL c:/windows/system32/Speech/SpeechUX/SpeechUX.dll

    Maybe permissions is the problem?
    spud@spud-laptop:~/.wine/drive_c/windows/system32$ ls -l sqmapi.dll
    -rw-r--r-- 1 spud spud 134144 2008-11-02 22:06 sqmapi.dll
    spud@spud-laptop:~/.wine/drive_c/windows/system32$ chmod a+r sqmapi.dll
    I fixed this with all other copied files. No luck. Same readout. Stuck.

  • OK today I found out my wine is 1.0. So I upgraded. Now on 1.1.7 : Slightly different error:
    1. spud@spud-laptop:~/.wine/drive_c/windows/system32/Speech/SpeechUX$ wine regsvr32 ./SpeechUX.dll
    2. wine: Call from 0x70d22a1e to unimplemented function KERNEL32.dll.InitializeCriticalSectionEx, aborting
    3. fixme:ntdll:RtlNtStatusToDosErrorNoTeb no mapping for 80000100
    4. Failed to load DLL ./SpeechUX.dll
    5. Then I upgraded wine to 1.1.7 and tried again
    6. spud@spud-laptop:~/.wine/drive_c/windows/system32/Speech/SpeechUX$ wine regsvr32 ./SpeechUX.dll
    7. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae0d0,4000,0x04000000) semi-stub
    8. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae1c0,4000,0x04000000) semi-stub
    9. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae2f0,4000,0x04000000) semi-stub
    10. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae498,4000,0x04000000) semi-stub
    11. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae2c8,4000,0x04000000) semi-stub
    12. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae1d8,4000,0x04000000) semi-stub
    13. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae1f0,4000,0x04000000) semi-stub
    14. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae130,4000,0x04000000) semi-stub
    15. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae288,4000,0x04000000) semi-stub
    16. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae070,4000,0x04000000) semi-stub
    17. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae1a0,4000,0x04000000) semi-stub
    18. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae398,4000,0x04000000) semi-stub
    19. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae148,4000,0x04000000) semi-stub
    20. fixme:ntdll:RtlInitializeCriticalSectionEx (0x70dae3b0,4000,0x04000000) semi-stub
    21. fixme:advapi:RegisterTraceGuidsW 0x6cd15f38 0x6cd20180 0x6cd019f4 1 0x32f8d0 (null) (null) 0x6cd20188
    22. fixme:advapi:RegisterTraceGuidsA 0x6ec16eb9 0x6ec265e8 0x6ec026b0 1 0x32f8cc (null) (null) 0x6ec265f0
    23. fixme:advapi:RegisterTraceGuidsA 0x6ec16eb9 0x6ec26608 0x6ec026c0 1 0x32f8cc (null) (null) 0x6ec26610
    24. wine: Call from 0x4b4775ab to unimplemented function USER32.dll.ChangeWindowMessageFilter, aborting
    25. fixme:ntdll:RtlNtStatusToDosErrorNoTeb no mapping for 80000100
    26. Failed to load DLL ./SpeechUX.dll

    Looked up ChangeWindowMessageFilter on MSDN. No way am I gona be able to implement that. This is the realm of upper-echelon wine core devs. Dayum.
Can anyone help me get to the next level?

Sam

PS If you're interested in taking over this project, joining in or helping, many thanks! Please find me in #cmusphinx on freenode. Or email me sunfish7@gmail.com

Peace out

Sam