RE: Mac python programming

  • From: "Ken Perry" <whistler@xxxxxxxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Sun, 2 Jan 2011 11:46:15 -0500


Ok I had to try it before I get back to work on Monday.  I just got
emacspeak to compile with no problems. Well I say no problems but there were
about 8 warnings of packages I did not have installed to emacs but they were
either all lisp packages or they could be replace for example it said I
didn't have w3.  I just installed w3m which I think works fine with
emacspeak since it works fine with emacs.  If not I will go get the older
w3.el sources.  Of course none of the packages it warned about really will
break emacspeak it just will not allow me to do a couple things till I get
them installed.  So anyway I now have emacspeak compiled but I have not
installed it yet because I want to see if I can jerry rig it to take my
ttsserver.  Heck I might even dump python all together and rewrite what I
have done in c++ for speed but we will see because I would rather get it to
work first then make it faster.  At this rate though maybe I can get
emacspeak talking next weekend.

I also want to see if I can find a way to have emacsspeak run in console
output mode or something where it will write the text it would send to a
file that would  be helpful.

Ken

-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Dave
Sent: Sunday, January 02, 2011 1:20 AM
To: programmingblind@xxxxxxxxxxxxx
Subject: Re: Mac python programming

It's been a while lol...but looks like I went down the same road
before.  Here's my take on a server before.  Mac has a native
messaging loop (not sure what it is in terms of py objc context), but
in objc it's NSRunLoop.  Looks like you've found it though in
apphelper.

This server uses an http server to receive text from a client.  Also,
would be interested in your luck compiling emacspeak on Snow Leopard.


""" begin server
"""
import string,cgi,time, urllib
from os import curdir, sep, system
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from AppKit import NSObject
from AppKit import NSSpeechSynthesizer
""" WebServer
This script starts an http server and utilizes the Mac OS X speech
synthesis framework to generate speech received through the browser as
an url.
"""
class SpeechSynthesizerDelegate(NSObject):
 def speechSynthesizer_didFinishSpeaking_(self, synthesizer, success):
   sys.stdout.write("finished speaking")

class MyHandler(BaseHTTPRequestHandler):
 speechSynthesizer = NSSpeechSynthesizer.alloc().init()
 delegate_ = SpeechSynthesizerDelegate.alloc().init();

 def __init__(self, request, client_address, socket):
     MyHandler.speechSynthesizer.setRate_(500)
     MyHandler.speechSynthesizer.setDelegate_(MyHandler.delegate_)
     BaseHTTPRequestHandler.__init__(self, request, client_address, socket)

 def do_GET(self):
   
 MyHandler.speechSynthesizer.startSpeakingString_(urllib.unquote(self.path))

def main():
 try:
     server = HTTPServer(('', 80), MyHandler)
     print 'started http server...'
     server.serve_forever()
 except KeyboardInterrupt:
     print '^C received, shutting down server'
     server.socket.close()

if __name__ == '__main__':
 main()


On 1/1/11, Ken Perry <whistler@xxxxxxxxxxxxx> wrote:
> Oh one more thing Dave.  I was planning to replace the main function part
> with a socket loop that would take from the stdin and from a tcip socket
> like the protocol says I just wanted to make sure the simple stuff worked
> first.  I didn't see a character speak method in NSSpeechSynthesizer
either
> did you?  If not this his how I would add the function to that script I
just
> sent you to speak a character...  If you add this right after the tts_say
> function this will make
>
> Ttsserver l <character>
>
> Work.
>
>
> #l c for speaking characters
> def l(text):
>     voice = NSSpeechSynthesizer.defaultVoice()
>     speech = NSSpeechSynthesizer.alloc().initWithVoice_(voice)
>     speech.setDelegate_(SpeechDelegate.alloc().init())
>     speech.startSpeakingString_(text)
> funcs['l']=l
>
> -----Original Message-----
> From: programmingblind-bounce@xxxxxxxxxxxxx
> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Dave
> Sent: Saturday, January 01, 2011 9:05 PM
> To: programmingblind@xxxxxxxxxxxxx
> Subject: Re: Mac python programming
>
> Agreed on the crappy docs concerning this.
>
> Tried my hand at a speech server using py obj and had the *exact* same
> problem.
> Of course, implementing the delegate (NSSpeechSynthesizerDelegate if
> memory serves), with all methods of the protocol yields no errors at
> runtime; it simply just doesn't work.
> Would be curious to see if anyone has an answer as well.
>
> On 1/1/11, Ken Perry <whistler@xxxxxxxxxxxxx> wrote:
>>
>>
>> Has anyone created a command line application and made use of delegates
> with
>> pyobjc under Mac?  I am working on a project that uses the
>> NSSpeechSynthesizer  class in coco and I can make the program talk fine
> but
>> I am not getting the didFinishSpeaking delegate message. If you know what
> I
>> am talking about I can send you some simple sample code to check and see
> if
>> I am doing this correct.  I have to say the pyobjc documentation and
> sample
>> programs suck.
>>
>>
>>
>> Ken
>>
>>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
>
__________
View the list's information and change your settings at 
//www.freelists.org/list/programmingblind


__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind

Other related posts: