Caller name announcement with espeak - Windows Mobile Development and Hacking General

Hi,
I'm developing a better caller name announcement than MSVC.
It's based on espeak for WM build and mortscript.
The announcement works, but not when incoming call ringing, I think WM disable the PlaySound when active call in progress. MSVC pauses the ringtone and plays it's own generated wav, than resumes the ringtone. Can somebody help how can I do it?
Here is the current mortscript:
While (1)
IsCalling = RegRead("HKLM", "System\State\Phone", "Incoming Call ID Status")
if (IsCalling > 0)
name = RegRead("HKLM", "System\State\Phone", "Last Incoming Caller Name")
run ("\Program Files\eSpeak\espeak.exe","-v hu -w \MUSIC\test2.wav ""call from: " & name & """")
PlaySound "\MUSIC\test2.wav"
Vibrate( 10 )
endif
sleep(1000)
EndWhile

I think it's an excellent idea, considering that MSVC sucks at announcing caller names. I really don't know the inner workings of WM vs. Mortscript functions, but if it's a reg key that WM changes during active call, it should be possible to track which one it is with SKTracker.
Or, You could try using the playsound.exe from here - http://forum.xda-developers.com/showthread.php?p=6288343. Maybe this one works during call, I don't know.
I presume You have disabled the WM incoming call ring, but why not let the system take care of the vibration? Because Mortscript says the script is paused until playing the sound finishes.
And since I couldn't find espeak for WM, could You kindly point me to it?
Thanks.

Download: eSpeak.zip

Thanks!
Might I ask where did it come from? I found the sourceforge page with espeak but there's no WM version there. Did You compile it Yourself? And for some reason the Estonian language (the one that I actually need) is thrown out from the WinCE version? I think I can use the one from PC version (haven't tried yet tho), but just curious about why

I fetched it from here. This link was provided there.

OK, thanks! I found that it probably originates from here: http://www.efficasoft.com/gpsutilities/index_wm_ppc_resources.html

Re:
Unfortunately this playsound didn't work too.
The incoming call event has higher priority than normal apps and it mutes all other application.
I'm trying to determine how MSVC works, but I'm not enough for this.
Thanks for the advise!
aiiro said:
Or, You could try using the playsound.exe from here - http://forum.xda-developers.com/showthread.php?p=6288343. Maybe this one works during call, I don't know.
Click to expand...
Click to collapse

Damn MS then... Too bad.

Related

syntaxes for HKLM/Software/Microsoft/Shell/Rai/:MSCPROG

Anyone knows the available syntax to use with the registry key of
HKLM/Software/Microsoft/Shell/Rai/:MSCPROG
I am trying to create a shortcut to call up the phone program
Cprog.exe
to
1) Redial last number
2) Dial contacts [ evoking also :MSCONTACTS OR :MSPOUTLOOK ]
3) Enable Speaker phone
4) Dial specific queue number in call history
5) Dial speed dials number
6) Dial specific number [ ie call 123456789 ]
Any help from the experts here?
Vijay perhaps can share some of your knowledge?
Main issue is coz I want my bluetooth button to activate a redial last number.
Though pressing on the bluetooth button and holding it for 2 seconds will do that, as a single tap will invoke the
HKLM/Software/OEM/VoiceCommand/[whatever commandline.exe]
I'd like to give it some flexibility of what I want to run.
Running normal apps like checknotification does not do the bluetooth any honour.
So I was thinking if the phone functions [ seen on the main dialpad] can be invoked with the :MSCPROG syntaxes.
Any help or hint would be helpful.
I don't have any experience with :MSCPROG (ie cprog.exe) command lines - although it's possible to try to descern if there are any, my VJPhoneShortcuts take another route in accessing cprog.
I have the research done on a relatively large update to VJPhoneShortcuts, and will finally build in WM2003 compatiblity where possible (I think everything except WM2003 speakerphone), hopefully this weekend or so.
I really don't know if the degree of control you want over cprog.exe is likely to be possible from external manipulation of cprog through command lines, since you're effectively replicating most of what the phone dialer can do.
However, it's almost certain that there is internal manipulation possible, as demonstrated by the phone skinning dll (phanc.dll or something like that, cant remember spelling). But I've never looked into that. Possibly in the future. But if you know how, I would investigate that dll first.
V
farbird said:
1) Redial last number
Click to expand...
Click to collapse
You can make a program that would FindWindow(cprog), then PostMessage(left button click) to its "dial" button.
i aint a programmer...
hehehe..
i shall wait for vijay if he has anything coming up that can help...
cprog.exe -url tel:121 will start the phone application, and prompt you if you want to dial '121'.
cprog.exe -url dtmf:...
not tested
[HKEY_CLASSES_ROOT\tel\Shell\Open\Command]
@="cprog.exe -n -url %1"
That reminds me of an old post:
http://forum.xda-developers.com/viewtopic.php?t=38003&highlight=tel+protocol
For making calls from webpages
V
no dice with bepe method
1) Redial last number
2) Dial contacts [ evoking also :MSCONTACTS OR :MSPOUTLOOK ]
3) Enable Speaker phone
4) Dial specific queue number in call history
5) Dial speed dials number
6) Dial specific number [ ie call 123456789 ]
Click to expand...
Click to collapse
FarBird, it occurrs to me that although it's not the most elegant solution, a mort script would help you out here.
1. Mortscript.
2. How do you want to call contact? By name or number, or by interaction with the contacts app? Check out writing extensions for the MSContacts on MSDN for technical details.
3. Mortscript, or new VJPhoneShortcuts hopefully this weekend (on WM5 only. I've not played with hardware intervention on enabling Speakerphone on WM2003)
4. Mortscript.
5. Mortscript.
6. Write your own app or VJPhoneTools, or cprog with a command line.
I'll like to take the phone app apart a bit more to work through some of these on a more technical level, but for the cost benefit, Mortscript would almost certainly work.
The speed dial and call history pages are dynamically generated list views. As such, I don't think there's an easy way to command line into them - I think they're app controlled. Thus, mortscript generally.
Otherwise, you'd have to parse the call history yourself (not difficult, but is programming) and select and dial accordingly. Would be a nice app to write (I have most of this written already for VJEphemeris), but you would be dialing somewhat blind I think - how could you know who's in 4th place in call history without first showing the call history?
V

Answering machine

Hello
I wrote an answering machine program (mortscript) for WM5 but I encountered a strange problem, when a call is answered all sounds playing in my phone was silent.
Does anyone know a tweak how to disable the silent feature in WN5?
Thanks
Do you have a cab file program for WM6? really need this program !!!
NO, Not yet.
When it's done there will be no need of cab file, it is a very light script file.
The only problem I have now is that my greeting message can't be heard by the caller because, as I said all sounds are silent.
There are no other problems, the caller can leave his message as usual.
You can even determine the length of the recording.
I hate to disappoint you, but an answering machine can not be written for many WM based phones in native C, let alone using mortscript.
Ahh if it was only that easy...
When a call is answered the sound is routed differently to and from the phone on the OS / Hardware level and as far as we know short of faking a BT deriver there is no way to record from the phone or play sound to the person at the other end.
There have been a lot of discussion on this subject in the forum, please use google and search the forum for "answering machine".
Thanks for your answer.
I have searched this form and the internet for such software and encountered your answer – B U T - I have noticed that in my phone (ETEN X500) I HAVE NO PROBLEMS WITH RECORDING CONVERSATIONS - the caller and my voice, (I even wrote a recording script and assigned it to the record button).
The only problem with my answering machine is that after the device automatically answer the call, the caller can't hear my greeting message, actually no sound cab be played because when there is an incoming call, the device mutes all other sounds.after that I can record the caller voice with no problems.
BTW – If a song is playing and a call comes, the song mutes, but when the call end, the song voice comes again.
So I thought there must be a registry value that orders the device to mute all sounds when a call comes.
tweak
i know there are some tweaks (programs) ,only i cant remember wich ones... that will let you choose between muting sound/notification in call or just let it play. i think phone alarm from pocketmax.net has that option. and maybe i can come up with some others if you give some time.....at this moment i cant remember any .... but i will let you know. i know for sure that there are some options for this!!
Thanks man
That what i thought. There must be some tweak for it.
Looking forward to your reply
This is interesting. As I wrote in my answer the problem is with "many" not all WM based phones.
So far I only knew about one that came with a built in answering machine - the g-smart.
I assumed you had an HTC phone, but if ETENs have recording and playback capability during calls too this may be very interesting.
Unfortunately, I do not know of any specific tweak for what you ask, but check out Tweaks2k2 and Pocket hack master perhaps one of them will have it.
Thanks, but no luck in both of them.
Still looking for the desired tweak...
So u need to press the record button to activate recording?
No,
The script detect an incoming call, if the call doesn't answered after X seconds (you define the X), the device answers the call, play the greeting message (which for now can't be heard by the caller – that until I find the desired tweak), after that the device opens Notes and starts recording for Y seconds (once again - you define the Y).
When the recording is done it sends a missing call notification – so you know you have missing calls.
Hi there,
Perhaps I'm getting the wrong end of the stick....but how is this any better than the answerphone function you get with mobile operators??
It’s not.
But it has its benefit. You save all messages on your phone (and can forward them to your PC), you don’t have to call your operator to listen to your messages, you can control on the activation and the parameters of your answering machine and most of all – you save a lot of money (at least here we pay for each call to cellular operator)
Guys, go read http://forum.xda-developers.com/showthread.php?p=1798169
Ah I think an answering machine is possible using SK Schema
I found the article on the internet and it was quite a joy as it worked perfectly for me on my Imate Jam
Played back the prerecorded message nicely and then ran Resco audio recorder to record the sound very nicely as well
If interested I can post the whole script here
Oh
Please do
Thanks
Check this out guys: http://www.freewarepocketpc.net/ppc-download-isecretary-v1-1.html
Haven't tried it yet, it looks too "simple", but ok
http://forum.xda-developers.com/showthread.php?t=357635
this should indeed answer all your questions in regaurds to an answering service for you ppc
The beginning to visual voicemail?
This would be pretty sweet...good luck man.
The below mentioned article was written by andason:
Here is a how to on the answering machine... thanks to "testdebug".
first change
HKEY_CURRENT_USER->control panal->sound categories-> attenuation
0 -------- 0x0(1)
then.
how to generate and save script file= open skchema. cleck tools. click script. click new. select command. and select phone then answer at the top. click ok. click new again. select command. choose multimadia then play a wave file. select parameters. and choose file. browse and select the wav file u created by yourself using the windows default note application. choose tools again. click context menu. and click save to file. This is the script file that your are going to select and execute at the below mentioned.
from skchema, go to watch mode, type new, select watch for windows then choose phone at the top. select event title, choose phone ring on top. select ring number and put your dersired number of ring time before pickup. select execute and choose the script files that you saved at above.
Download latest version freeware PMrecorder. and create a shortcut n throw it into startup. it will record all your calls. to playback calls. just click on call list. select the logs and click play. You can set skschema to execute file when exit so that skschema will not expire. the file is a freeware mortscript, set it to delete skschema registry at hkey_current_usersoftwaresksks chemmain.Just save the file as RegDelete HKCU,Softwareskschema,main
Now u have an aswering machine that will auto answer your call at a specified number of rings which specified from u. then it will playback wav file from your recorded voice. And recording the calls. i see the pmrecorder does not record using the mic but through internal phone module as it is loud even recording othe party.
Ta-ta.........answering machine!
i even set skschme to monitor my sms. if specified number or sms words is recognised. it will excute script tp start cell profiler. scan the cell id then sms me back the cell location then format or delete all the files in case of thief.
~~~End of original post~~~
Note that in order for the above script to work correctly on my Imate Jam i needed to add a delay of 3 secs [after receiving the call and before playing back the greetings wav file: in parameters put #d(3)] in the original answering machine script by testdebug.
Instead of PMrecorder I used Resco audio recorder and the quality of the other party is simply "wow", very loud.

iSecretary - Answering Machine For WM6

Hi All,
I found this great app that acts as an answering machine but it is very buggy and does not play the outgoing msg for the caller calling in so that he/she knows to leave a msg, otherwise it works great. The app is called iSecretary. Can anyone here recommend a similar app or cann fix up this app?
Here is the info about the app below:
A lot of Windows Mobile users have been asking for answering machines for years. While it has long been available on competing mobile smartphone platforms (for example, Smart Answer for the S60), for Windows Mobile, so far, there wasn't a generic one - that is, one that wasn't shipped along with a specific Pocket PC model only.
Now, this seems to be changing: the first "real" answering machine has been released for WM Pocket PC's.
Two screenshots of the incoming, recorded calls:
(HTC Universal)
(HTC Wizard)
Features
- lifts the handset automatically when the preset time expires;
- plays the file to the caller;
- records your caller's message within the limits of preset time and hangs up;
- contact list filter (choose an individual wav for each contact);
- ignore list;
- compatible with speakerphone (for PDA whitch can not work with signal in line);
- autoload after SoftReset.
- Speakerphone volume control
- Microphone control (its work with some PDA, For example: ASUS P525).
- Black List, reject ringing (filtring by phone number).
Getting, installing
Get it HERE, unRAR it with, say, WinRAR, transfer the contents of it to your Pocket PC and run iSecretary.exe. You can safely minimize it / suspend the phone: whenever an incoming call arrives, the answering machine activates, plays the default message (you can easily change it in the Answer List tab, even in the non-registered version) and starts recording the caller's voice. If it can, that is - the same restrictions apply as with traditional call recorders like PMRecorder. .
Trial restrictions
With the trial version iSecretary 2.x, you can only use 2 second recordings.
After buying the activation key you will be able to use all the modefications of the 2.x version.
Freeware version
A freeware version of iSercretary 1.x you can get HERE.
Technical requirements:
200MHz ARM processor, Windows Mobile 5 or more, Compact FrameWork v2.
Tested devices:
- ASUS P525
- HTC Universal
- HTC Wizard
links dont work, and the screenshots neither
Guys, make sure you follow my articles in the Genral forum - particularly my reviews. I've reviewed this stuff a long ago and have always been posting update news.
Try Bizi app. Auto responder by SMS. As alternative to the answering machine.

Code Contribution - Howto Hide TF3D CallerID

I discovered this yesterday, in writing a small app to hide TF3D Caller ID so My 3rd party caller ID would be the only one presented on an incoming call.
Here it is as is - limited testing sofar for me it works.
This is in C#:
Hey, I may have a contribution for you. That is Assuming you have not been able to Hide the TF3D (aka Manila) Caller ID on Diamond and TP devices in your custom caller ID code/apps.
As I said I wrote a small stub app to specifically Hide TF3D (Manila) caller ID so your custom / 3rd party Caller ID app would be the only one that appears. Actually Just figured it out yesterday; Have done some limited testing and appears to be working 100% so far. To that end, would like to provide you sample code that I used incase you find it useful.
Note: This is written in C# but the API's can be called in C++ as well.
Includes (from WM6 SDK) for c#:
using Microsoft.WindowsMobile;
using Microsoft.WindowsMobile.Status;
Code run from timer:
if (SystemState.PhoneIncomingCall)
{
//ShowWindow(FindWindow("", "Phone - Incoming"), SW_HIDE);
ShowWindow(FindWindow("PPG_GSMWorkerCls", "PPG_GSMWorker"), SW_HIDE);
ShowWindow(FindWindow("PhoneCanvasWorkerCls", "PhoneCanvasWorker"), SW_HIDE);
ShowWindow(FindWindow("manila", ""), SW_HIDE);
}
else if (SystemState.PhoneCallTalking)
{
ShowWindow(FindWindow("PhoneCanvasWorkerCls", "T - Mobile"), SW_HIDE); // <--Note sure if this is needed / but the Diamond Phone Status has the carrier in win title so did it anyway so only your (custom app status is visible)..
ShowWindow(FindWindow("PhoneCanvasWorkerCls", "PhoneCanvasWorker"), SW_HIDE);
ShowWindow(FindWindow("", "PhoneCanvasWorker"), SW_HIDE);
}
if ((!SystemState.PhoneCallTalking) && (!SystemState.PhoneIncomingCall))
{
//Show manila once hung up- to prevent any possible problems with manila(Just in case).
ShowWindow(FindWindow("manila", ""), SW_SHOW);
}
Hopefully you all have already worked this out and or can do it better then me here. But contributing as I know many have asked this before..
And for those who want the stub app I have attached the CAB here.
So far no battery issues that I known of.. Its as is, but will take any feedback for future updates if requested.
Bump.. So people dont miss this..
Which 3rd party app do you use?
BTW thanks for the contribution
What about video calls. I use S2U2, but it doesn't work with video calls, so the default Caller ID kicks in. What will happen if it's disabled, or is it disabled of video calls .
I use PhoneEx at the moment. I have not tested Video calls, well I can't as we dont have that option in the US. Also not sure if PhoneEx would support it either. So obviously someone could test this in that scenario and see what the results are.
is this program hide my caller id when i call anyone even if my operaor doesnt support this feature for my line

All about Microsoft Voice Command (MSVC) on Topaz with WM6.5

I'll start this thread to share my knowledge aquired after many hours of testing regarding the registry settings of Microsoft Voice Command on Topaz with WM6.5 ROM from HTC although the settings may be applicable to other cooked ROM's and phone models.
First of all, I don't know why but different versions of MSVC are installed with different registry settings so I will only talk of the final result. These characters "" do not need to be completed.
Here comes the tricky part. To make MSVC work you need to alter the following registry settings:
HKLM\Software\OEM\VoiceCommand
Type: String
"Path" = "\Windows\VoiceCmd.exe"
HKCU\ControlPanel\SoundCategories\Ring
Type: Dword
(BE CAREFUL HERE, IF IT'S A STRING, YOU NEED TO FIRST DELETE THE STRING AND CREATE A DWORD WITH THE FOLLOWING VALUES)
"AttenuationCategory" = "2" (it's the setting I'm using)
(This value can be changed. It tells how much the ringtone is reduced for the voice to be heard)
The rest of the values here do not need to be altered.
Next is:
HKCU\ControlPanel\SoundCategories\VoiceCommand1
Type: Dword
(SAME HERE, IF IT'S A STRING, YOU NEED TO FIRST DELETE THE STRING AND CREATE A DWORD WITH THE FOLLOWING VALUES)
"AttenuationCategory" = "5" (it's the setting I'm using)
(This value can be changed. It tells how loud the voice in call announcements can be 1 TO 5 1=low 5=high)
The rest of the values here do not need to be altered.
Make sure that the following location's are set to:
HKCU\ControlPanel\Sounds\RingTone0
Type:String
"Category" = "Ring"
and:
HKCU\ControlPanel\Sounds\TTSAnnounce
Type:String
"Category" = "VoiceCommand1"
Type: String
"Sound" = "\Application Data\Volatile\\TTSCallerID.wav
The rest of the values here do not need to be altered.
Do not forget to set your MSVC to announce incoming calls and to announce notifications using Bluetooth hands free if available.
If you want to assign the long call button from the phone to launch MSVC without a third party software then assign it from the personal folder in settings then edit the following registry key:
HKLM\Software\Microsoft\Shell\Keys\40C6
Type: String
"" = "\windows\voicecmd.exe\" (THE LAST SLASH IS CRITICAL, SO USE IT)
Leave the rest the way they are.
This are the settings for which dll should be used to initiate bluetooth communication: BTAGTEXT.DLL , VCBTHAG.DLL (it's installed by MSVC and this is the one you should use) and OEMAGW.DLL.
You should have something like this:
ex:
HKLM\Software\Microsoft\Bluetooth\AudioGateway
Type: String
"BTAGExtModule" = "\windows\vcbthag.dll"
If you want to use your wired headset to launch your MSVC then you need to long press the hang up button.
This setting were tested on the updated WM6.5 ROM from HTC website with MSVC version 1.6.21040 which works perfectly and 1.6.21725 which also works fine except for bluetooth voice command initialization from hands-free which does not work because I don't know why this version of MSVC closes the communication between phone and hands-free.
And last you should set you phone to not use single volume, if you do, the volume of the voice will be reduced with the ringtone, if you set them separately the voice will be spoken out loud even if you reduce the ringtone volume or system volume.
I hope this helps most of you out there who are desperatly trying to use MSVC and don't know how to set it to work the way it was supposed to.
P.S. For those who are trying to get the WWE eastern european 6.5 ROM (ex. Hungaria, Romania, etc), you can get it from HTC selecting in the country selection Ceska Republic. I don't know why but seems that other countries are not updated in the ROM section.
Hi,
I will add this to the MS Voice configger app i have set up.
Thanks for this!
You're welcome
It was my pleasure, I'm glad that someone will be able to use it and not to go through the same hardship as I did.
Dword v.s. String
HKCU\ControlPanel\Sounds\TTSAnnounce
Type: Dword
"Category" = "VoiceCommand1"
In the HKCU key you mentoned above, My type in the phone showed a string, not Dword. And it seems I can't add new Dword "string" after deleting the string type.
Anything I missed?
Sorry, my mistake, I will edit it, it should be a string there.
Hi guys,
For the longest time after I upgraded my ROM, MSVC has stopped making incoming caller announcements. Everything else works, it just wouldn't make call announcement when a call comes in. Not on speaker, not on BT. I tried everything and it still didn't work.
I came across this thread and I tweaked the registry. As soon as I changed
HKCU\ControlPanel\Sounds\RingTone0\Category from "VoiceCommand1" to "Ring", then incoming call announcement worked for me!!
So i was pretty happy about it, except it only worked for a few days. The last couple days it's stopped working again.
Taking a closer look at the registry I realize what I have is identical to what's posted here, except for -
HKCY/Control Panel/Sounds/TTSAnnounce/Sound
Instead of "\Application data\Volatile\\TTSCallerID.wav" I have "\Internal Storage\Backup and Restore\Application data\Volatile\\TTSCallerID.wav"
I guess it's a case where my ROM moves all volatile files from main memory to internal storage (like a SD card ... I use TouchDiamond1 which uses internal storage instead of SD card).
When I look at that folder, a TTSCallerID.wav file IS indeed generated everytime I make a call to my phone! It is just for whatever reason it fails to play that file!!
Has anybody experienced this? Can anyone help?
Voice Command Problem
Do you use some tweaking programs which could move the temporary folders from the main memory to the storage card or a custom rom which could be tweaked that way? As long as I now, you cannot move the location in which voice command writes his voice file as it is generated within the program.
Strange enough, call announce works after I made the following changes:
HKCU\ControlPanel\Sounds\TTSAnnounce\Category
Change from "VoiceCommand1" to "Ring"
That's different from what's reported on the 1st post, but it seems to work for my phone .... ??!?!
As for moving the volatile folder to internal storage ... it's a feature of my ROM (DiaDuit 1.6.7) ... the ROM automatically does that, even if I put files inside \Application\Volatile\ it moves them to the storage automatically. But everything seems to work fine, including MSVC after I made the above registry tweaks ... so I guess that wasn't the culprit.
Hi,
So I update the config app to version 1.2.
The above mentioned registry fix was already in the config app.
Last post for Topaz test:
http://forum.xda-developers.com/showpost.php?p=5485644&postcount=44
Can someone make a cab of this. thanks
Cab file
shayan.k said:
Can someone make a cab of this. thanks
Click to expand...
Click to collapse
It seems someone already has, check the link above

Categories

Resources