Also, I changed up my server to use the server's stdin to receive text. Doing this via COcoa framework's to receive the callbacks when line's are received (via FileObserver's). On 1/2/11, Dave <davidct1209@xxxxxxxxx> wrote: > Thanks for the tip with mac ports and installing emacs through it. > Nice to have the dependencies pulled in for you. > > I've got emacspeak talking with a quick hack of dtk-speak.el. It's > still passing over tts param's (pertaining to outloud which is the > default); gotta fix that and then figure out how to parse those > embeded commands. > > Otherwise, responsiveness is incredibly good; Alex just happens to be > super wrt latency so it's not a surprise. Btw, characters seem to be > handled properly. > > On 1/2/11, Ken Perry <whistler@xxxxxxxxxxxxx> wrote: >> Nod which is why I started and will make this server in python first then >> once I have it in python I can quickly convert it over. >> >> Ken >> >> -----Original Message----- >> From: programmingblind-bounce@xxxxxxxxxxxxx >> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Dave >> Sent: Sunday, January 02, 2011 3:02 PM >> To: programmingblind@xxxxxxxxxxxxx >> Subject: Re: Mac python programming >> >> Ken, >> >> I think you misunderstood me. You can make C++ calls within objective >> C methods (i.e. >> >> - (void)foobar { >> std::vector<std::string> x; >> x.push_back("asdf"); >> MyCppClass.DoSomething(); >> } >> >> I understand the argument convention's kinda funky, but it actually >> serves to self document the code >> i.e. >> [foobar performActionWtihName:bla forObject:bbla2 withTime:10 >> inYear:2010 etc:blabla]; >> >> Requires retuning of our "speech" delimiters when we parse it with our >> ears >> :). >> >> On 1/2/11, Ken Perry <whistler@xxxxxxxxxxxxx> wrote: >>> No it is not the same difference since c++ and python at least have >>> arguments and functions like I like I just have never liked the [object >>> argument1: argument 2: argument3 ] type of function naming. >>> >>> Ken >>> >>> -----Original Message----- >>> From: programmingblind-bounce@xxxxxxxxxxxxx >>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Dave >>> Sent: Sunday, January 02, 2011 1:11 PM >>> To: programmingblind@xxxxxxxxxxxxx >>> Subject: Re: Mac python programming >>> >>> That's macports I assume? >>> >>> Also, objective C interoperates pretty well with C++ (only notable >>> exception is that an objc class can't inherit from a C++ class and >>> vice versa). If you're messing about with emacspeak (and probably >>> then lisp), instead of paren's, you're using brackets (same >>> difference? sorta except for prefix operators in lisp). >>> >>> On 1/2/11, Ken Perry <whistler@xxxxxxxxxxxxx> wrote: >>>> Well it doesn't have to be objective c there are direct libraries to >>>> c++ >>> as >>>> well. I will decide if I want to mess with those funcky function >>>> headers >>> or >>>> not. I used to code in objective c some in linux so maybe it won't hurt >>> too >>>> much to think with brackets again. First thing is first though I want >>>> to >>>> get this simple python ttsserver working so I can test it if it feels >>>> sluggish then I will think about converting it to some binary language. >>> Too >>>> bad the speechSynthisizer class doesn't seem to have a speak by >> character. >>>> I guess I could convert the character to a phoneme. >>>> >>>> >>>> As for how I made it I just downloaded the may 2010 bz2 file and did >>>> make >>>> config and make and it compiled as if I was on linux with no problems. >>>> >>>> Now I have to point out that I have ports installed which is where I >>>> get >>>> emacs and all the linux tools like bison flex etc from. It seems to be >>>> working though. >>>> >>>> Ken >>>> -----Original Message----- >>>> From: programmingblind-bounce@xxxxxxxxxxxxx >>>> [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Dave >>>> Sent: Sunday, January 02, 2011 12:35 PM >>>> To: programmingblind@xxxxxxxxxxxxx >>>> Subject: Re: Mac python programming >>>> >>>> That's good news; I haven't messed about with building emacspeak (my >>>> speech server had been used for another project). Which build file >>>> did you use (I think the main build target tries to build the linux >>>> based speech servers as well)? >>>> >>>> I dug into emacspeak sources a bit and seems fairly easy to get it all >>>> working. It looks like you just need to modify dtk-speak.el to be >>>> aware of the mac os server. Looks like the lisp layer communicates >>>> with the server via (process-send-string ) which sends the string to >>>> the process using stdin. >>>> >>>> The way to go imo for efficiency is to write the server is native >>>> objective c and link against appkit directly. >>>> >>>> On 1/2/11, Ken Perry <whistler@xxxxxxxxxxxxx> wrote: >>>>> >>>>> >>>>> 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 >>>>> >>>>> >>>> __________ >>>> 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 >>> >>> >> __________ >> 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