https://bugs.winehq.org/show_bug.cgi?id=50515
Bug ID: 50515 Summary: SofTalk 1.56 doesn't speak continuously after punctuation marks. Product: Wine Version: 6.0 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winmm&mci Assignee: wine-bugs@winehq.org Reporter: sagawa.aki+winebugs@gmail.com Distribution: ---
SofTalk is a text-to-speech software for Japanese. When I have it speak a sentence with punctuation marks, it just speaks before the mark. In other words, it doesn't speak the left part of the sentence if it finds an Ideographic Comma.
Steps to reproduce: 1. Download stk01560.zip from https://www.vector.co.jp/soft/winnt/art/se412443.html 2. Download Winetricks from https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetrick... 3. Run "chmod +x winetricks" 4. Run "./winetricks vb6run comctl32ocx" 5. Unpack stk01560.zip 6. Run softalk/SofTalk.exe on Japanese locale 7. Type "あたまが、よくなる。" and press "Play (▶)" button
$ sha1sum stk01560.zip 2fa9d9e199796503748479d605b29c9607e8dec0 stk01560.zip
Expected result: Speaking synthetic voice, "あたまが よくなる".
Actual result: Speaking synthetic voice, "あたまが" only. "よくなる" is missing.
https://bugs.winehq.org/show_bug.cgi?id=50515
Sagawa sagawa.aki+winebugs@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
--- Comment #1 from Sagawa sagawa.aki+winebugs@gmail.com --- I'm preparing a patch for this case.
After a few days debugging, I found out that waveOutGetPosition() doesn't conform to the native.
In detail, waveOutGetPosition() doesn't support TIME_MS type on native. So, it returns playing position with TIME_BYTE type. However, on wine, TIME_MS is supported. While SofTalk asks TIME_MS type, it seems to rely on returning TIME_BYTE counter. So, it doesn't work as expected, sigh.
https://bugs.winehq.org/show_bug.cgi?id=50515
--- Comment #2 from Sagawa sagawa.aki+winebugs@gmail.com --- I can confirm SofTalk 1.56 ignores returned mmtime.wType value. It doesn't test mmtime.wType value after waveOutGetPosition call, and the duration referred from 0043078B is expressed in bytes.
Here is disassembly: 0043075A | mov ecx,6 | ZeroMemory(&mmtime, sizeof(MMTIME)) 0043075F | xor eax,eax | 00430761 | lea edi,dword ptr ss:[ebp-2C] | 00430764 | rep stosd | 00430766 | lea ecx,dword ptr ss:[ebp-2C] | set &mmtime to ECX 00430769 | push 18 | sizeof(MMTIME) 0043076B | push ecx | LPMMTIME &mmtime 0043076C | push edx | HWAVEOUT 0043076D | mov dword ptr ss:[ebp-30],ebx | 00430770 | mov dword ptr ss:[ebp-2C],1 | mmtime.wType = TIME_MS 00430777 | call softalk.40A8A0 | waveOutGetPosition 0043077C | mov edi,eax | 0043077E | call dword ptr ds:[<&__vbaSetSystemErro | 00430784 | cmp edi,ebx | 00430786 | jne softalk.43079A | 00430788 | mov ecx,dword ptr ss:[ebp-28] | mmtime.u.cb (or mmtime.u.ms) 0043078B | mov edx,dword ptr ds:[esi+74] | duration in bytes 0043078E | xor eax,eax | 00430790 | cmp ecx,edx | compare... 00430792 | setl al | 00430795 | neg eax | make Visual Basic Boolean 00430797 | mov dword ptr ss:[ebp-30],eax | store the result to local var. 0043079A | mov eax,dword ptr ss:[ebp+8] | 0043079D | push eax | 0043079E | mov edx,dword ptr ds:[eax] | 004307A0 | call dword ptr ds:[edx+8] | call BASIC_CLASS_Release 004307A3 | mov eax,dword ptr ss:[ebp+C] | 004307A6 | mov cx,word ptr ss:[ebp-30] | 004307AA | mov word ptr ds:[eax],cx | copy the result to the arg.
https://bugs.winehq.org/show_bug.cgi?id=50515
Sagawa sagawa.aki+winebugs@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Fixed by SHA1| |37f3a078314423da4e291ccc8b0 | |9c6aab8aeb99f Resolution|--- |FIXED
--- Comment #3 from Sagawa sagawa.aki+winebugs@gmail.com --- Fixed by 37f3a078314423da4e291ccc8b09c6aab8aeb99f.
https://bugs.winehq.org/show_bug.cgi?id=50515
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #4 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.1.
https://bugs.winehq.org/show_bug.cgi?id=50515
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |6.0.x
https://bugs.winehq.org/show_bug.cgi?id=50515
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|6.0.x |---
--- Comment #5 from Michael Stefaniuc mstefani@winehq.org --- Removing the 6.0.x milestone from bug fixes included in 6.0.1.