wakillon

TinyClipToSpeech v 1.0.0.9 Update of 2012-07-01

14 posts in this topic

#1 ·  Posted (edited)

TinyClipToSpeech v 1.0.0.9

Read Clipboard Text Content using Sapi Voice

20140126213814.png


Access to all commands by Tray menu.

If you doesn't have Sapi5 installed, script ask for download it.
I know there is already some Text to speech scripts,
but i wanted an easy access ( clipboard content and tray menu )
and the possibility to change voice and settings while reading.
Text can be displayed on desktop gradually as what is read.
You can also save text to mp3 without need of read it.
My preference goes to Scansoft voices, easy to found and install and with a good pronunciation qualty.

As usual, some externals files are downloaded at first execution.

Previous downloads : 199

Update of 2012-07-01

Source : TinyClipToSpeech v 1.0.0.9.au3

ExecutableTinyClipToSpeech.exe.html

(Once this html file downloaded, double click on it for start the download)

Hope you like it ! :)

Edited by wakillon
1 person likes this

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites



Nice little script, well done.

Share this post


Link to post
Share on other sites

Nice little script, well done.

Thanks, glad you like it :)


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Hi wakillon,

Do you know if there is portuguese from Brazil on this sapi5 or Scansoft voices of wherever?

Thanks

Jose

Share this post


Link to post
Share on other sites

Hi wakillon,

Do you know if there is portuguese from Brazil on this sapi5 or Scansoft voices of wherever?

Thanks

Jose

Hi joseLB

Yes, there is one named "NextUp-ScanSoft Raquel Brazilian Portuguese Voice.msi"

You can find it easily ;)


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Updated

Added my own Sapi5 Voice installer for Xp users who don't have it installed.


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Hi wakilon,

#Include <WinAPIEx.au3> and #Include <APIConstants.au3> where not found on my includes file. It´s a new version of au3 that I need?

Thanks again,

Jose

Share this post


Link to post
Share on other sites

Hi wakilon,

#Include <WinAPIEx.au3> and #Include <APIConstants.au3> where not found on my includes file. It´s a new version of au3 that I need?

Thanks again,

Jose

Hi joselB

Download the of Yashield and copy all the files in your include dir ;)


AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

Hi Wakillon

My PC is speaking in portuguese :thumbsup: Great! Thanks for sharing!

It´s win7, 64 bits...

I have some extra questions/points:

1- at start, your program tries to write in registry. Do you know why? I didn´t allow but it worked OK.

2- option "open ...panel" opens no window

3- you told "...and the possibility to change voice and settings while reading ...". I too. There are any "commands" whe can insert at text to control speech?

I found Loquendo at least in protuguese has a much better speech. Probably in other languages too, it´s more natural.

If you want, give a try live at http://www.oddcast.com/home/demos/tts/tts_example.php?sitepal

Do you believe that your program would work with Loquendo?

Thanks

Jose

Edited by joseLB

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

HI joseLB

RegWrite with EnableBalloonTips key is for enable traytip display.

It seems the reg key i use for get sapi.cpl path doesn't exists on x64, so you can replace _OpenSpeechProperties function by this one :

Func _OpenSpeechProperties ( )    
    TrayItemSetState ( $_SpeechItem, $TRAY_UNCHECKED )
    Local $_SapiCplPath = RegRead ( 'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls', 'Speech' )
    If FileExists ( $_SapiCplPath ) Then
        ShellExecute ( $_SapiCplPath )
        Return
    EndIf
    If StringInStr ( @OSArch, 64 ) Then ShellExecute ( @WindowsDir & '\SysWOW64\Speech\SpeechUX\sapi.cpl' )
EndFunc ;==> _OpenSpeechProperties ( )

i have tried text to speech of oddcast.com and the Loquendo Démo TTS Interactive and you are right, voices ( french for me ) are better.

But oddcast is based on Flash and Loquendo returns wav files, so no chances to get it working with my script !

Thanks. ;)

Edited by wakillon

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

Thanks wakillon!

Share this post


Link to post
Share on other sites

Hi wakillon

I´m starting to use your code... it´s a great contribution, thanks

But as always, we need something else...

Do you know how I can know when it finish the talk? I mean, I don´t want to sotp waiting it to finish, but from time to time "ask" if it finished the talk?

second, what about to do an UDF with these functions?

Thanks

Jose

Share this post


Link to post
Share on other sites

Do you know how I can know when it finish the talk? I mean, I don´t want to stop waiting it to finish, but from time to time "ask" if it finished the talk?

second, what about to do an UDF with these functions?

Hi joseLB :)

You can do like this for ask if it finished to talk.

If $ospeech.Status.RunningState = $SRSEIsSpeaking Then
    ; is talking
Else
    ; is not talking
EndIf

And If i remember well there is already several Udf for sapi voice ! ;)

1 person likes this

AutoIt 3.3.14.2 X86 - SciTE 3.6.0WIN 8.1 X64 - Other Example Scripts

Share this post


Link to post
Share on other sites

#14 ·  Posted (edited)

thanks wakillon !

Jose

Edited by joseLB

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • rudi
      By rudi
      Hello.
      I fail trying to save content from WhatsApp other then plain text to a file that way, that non-char-content will be preserved in it's correct encoding. e.g. Emojis are spoiled.
      I've tried to do so using just filewrite() as well as forcing UTF
      #include <clipboard.au3> MsgBox(0,"Ready to read clipboard","Mark some WhatsApp content with non-char elements, e.g. Emojis, copy that to your clipboard (CTRL+c), then click OK here.") $ClipContent=_ClipBoard_GetData() ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ClipContent = ' & $ClipContent & @CRLF & '>Error code: ' & @error & @CRLF & "Extended: " & @extended & @CRLF) ;### Debug Console $File="C:\temp\ClipSaveToFile.txt" $h=FileOpen($File,2+8+64) ; overwrite, create path, UTF16 FileWrite($h,$ClipContent) FileClose($h) $h=FileOpen($File,64) $NeuGelesen=FileRead($h) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $NeuGelesen = ' & $NeuGelesen & @CRLF & '>Error code: ' & @error & @CRLF & StringLen ($NeuGelesen) & @CRLF ) ;### Debug Console FileClose($h) _ClipBoard_SetData($NeuGelesen) MsgBox(0,"Done","Re-read content of TEMP file was placed to the clipboard. Now paste this into WhatsApp. (Emojis will be spoiled)") I've also tried other encodings (16, 32, 64, 512)

      Or what is a different, functional approach to save WhatsApp Content to File in a way, to be able to to get it back to post it back to WhatsApp?

      Regards, Rudi.
    • AndreyS
      By AndreyS
      Hello to you, dear developers!
      Could you please tell me if there is an easy way to determine if the information was pasted from the clipboard?
      Without any variation of the insertion via Ctrl+V, or through the context menu.
      I revised the Help and many forum topics, but found nothing suitable.
      Can there be any WinAPI system events that determine this event?
    • Nareshm
      By Nareshm
      Its possible to past previously copied text to somewhere with autoit script ?
      If yes, How it ?
      example : Before I copied ABCD and then copied the PQRS, how to past the previously copied ABCD ?
    • mmoalem
      By mmoalem
      I seem to have an issue with clipget() - the following bit of code copy URL from chrome address bar - than using clipget() i try to grab the URL into a variable and input it into a spreadsheet. the script did not put anything into the sheet 
      originally I though it was an issue with  OOo/LibO Calc UDF and posted it there :
       
      than I tried writing $NewURL into a text file and than just a msgbox but it comes blank. (the URL is in the clipboard as i can paste it)
       
      send ("!d") ;select URL in browser send ("^c") ;copy selected URL Local $NewURL = ClipGet() MsgBox($MB_ICONINFORMATION + $MB_TOPMOST, $sTitle, $NewURL ) am I doing something wrong? is there an issue with a URL characters?
    • tcurran
      By tcurran
      Here's a short UDF that will, at least in most cases, detect whether a window can be copied from or pasted to programmatically--for example, by Send()ing ctl-c, ctl-v. This is often disabled when programs (like your AutoIt script) run at a lower UAC integrity level than the application they are trying to operate on.
      #include <WinAPI.au3> Func _WindowIsPasteable($handle) ;accepts window handle; returns true or false whether a window will accept Ctl-C, Ctl-V Local $bCanPaste = True Local $hTestWindowPID = 0 Local $hTestWindowTID = _WinAPI_GetWindowThreadProcessId($handle, $hTestWindowPID) _WinAPI_AttachThreadInput(_WinAPI_GetCurrentThreadId(), $hTestWindowTID, True);attach to window we want to paste into $bCanPaste = _WinAPI_GetFocus() ;Test whether window is paste-able--returns False if it is not _WinAPI_AttachThreadInput(_WinAPI_GetCurrentThreadId, $hTestWindowTID, False);detach from window thread Return $bCanPaste EndFunc Pass it a window handle; it returns true or false whether a window will accept programmatic pasting. The function may not work on the CMD window, since it handles the clipboard uniquely.
      This function works by attaching to the program thread of the window whose handle it receives, then attempting to perform a GetFocus on that thread. In most cases, the attempt will fail if the window will not accept programmatic copy-paste.