OSX comes a os utility called say

example:

$ say hello world

speaks better than me.

On Mar 6, 4:10 pm, rochacbruno <rochacbr...@gmail.com> wrote:
> What did you use for the voice sintetization?
>
> Enviado via iPhone
>
> Em 06/03/2011, às 14:57, Massimo Di Pierro <massimo.dipie...@gmail.com> 
> escreveu:
>
>
>
>
>
>
>
> >http://www.youtube.com/watch?v=xW5xOdDk-BE
>
> > Here are the steps:
>
> > # let us go into our web2py folder
> > cd /Users/mdipierro/Desktop/demo/web2py
>
> > # and we create a new app called pos (point of sale)
> > cd applications
> > mkdir pos
> > rm -r pos/*
>
> > # we make it a clone of the scaffolding application
> > cp -r welcome/* pos/
> > cd pos
>
> > openhttp://127.0.0.1:8000/admin/default/design/welcome
>
> > # lets get janrain working!
> > edit models/db.py
> > # -*- coding: utf-8 -*-
> > # this file is released under public domain and you can use without
> > limitations
>
> > #########################################################################
> > ## This scaffolding model makes your app work on Google App Engine too
> > #########################################################################
>
> > if request.env.web2py_runtime_gae:            # if running on Google
> > App Engine
> >    db = DAL('gae')                           # connect to Google
> > BigTable
> >                                              # optional DAL('gae://
> > namespace')
> >    session.connect(request, response, db = db) # and store sessions
> > and tickets there
> >    ### or use the following lines to store sessions in Memcache
> >    # from gluon.contrib.memdb import MEMDB
> >    # from google.appengine.api.memcache import Client
> >    # session.connect(request, response, db = MEMDB(Client()))
> > else:                                         # else use a normal
> > relational database
> >    db = DAL('sqlite://storage.sqlite')       # if not, use SQLite or
> > other DB
> > ## if no need for session
> > # session.forget()
>
> > #########################################################################
> > ## Here is sample code if you need for
> > ## - email capabilities
> > ## - authentication (registration, login, logout, ... )
> > ## - authorization (role based authorization)
> > ## - services (xml, csv, json, xmlrpc, jsonrpc, amf, rss)
> > ## - crud actions
> > ## (more options discussed in gluon/tools.py)
> > #########################################################################
>
> > from gluon.tools import *
> > mail = Mail()                                  # mailer
> > auth = Auth(globals(),db)                      # authentication/
> > authorization
> > crud = Crud(globals(),db)                      # for CRUD helpers
> > using auth
> > service = Service(globals())                   # for json, xml,
> > jsonrpc, xmlrpc, amfrpc
> > plugins = PluginManager()
>
> > mail.settings.server = 'logging' or 'smtp.gmail.com:587'  # your SMTP
> > server
> > mail.settings.sender = '...@gmail.com'         # your email
> > mail.settings.login = 'username:password'      # your credentials or
> > None
>
> > auth.settings.hmac_key = '<your secret key>'   # before
> > define_tables()
> > auth.define_tables()                           # creates all needed
> > tables
> > auth.settings.mailer = mail                    # for user email
> > verification
> > auth.settings.registration_requires_verification = False
> > auth.settings.registration_requires_approval = False
> > auth.messages.verify_email = 'Click on the link
> > http://'+request.env.http_host+URL('default','user',args=['verify_email'])+ 
> > '/%(key)s
> > to verify your email'
> > auth.settings.reset_password_requires_verification = True
> > auth.messages.reset_password = 'Click on the link
> > http://'+request.env.http_host+URL('default','user',args=['reset_password'] 
> > )+'/%(key)s
> > to reset your password'
>
> > #########################################################################
> > ## If you need to use OpenID, Facebook, MySpace, Twitter, Linkedin,
> > etc.
> > ## register with janrain.com, uncomment and customize following
> > from gluon.contrib.login_methods.rpx_account import RPXAccount
> > auth.settings.actions_disabled=['register','change_password','request_reset 
> > _password']
> > api_key = open('/Users/mdipierro/
> > janrain_api_key.txt','r').read().strip()
> > auth.settings.login_form = RPXAccount(request,
> > api_key=api_key,domain='web2py',
> >    url = "http://localhost:8000/%s/default/user/login"; %
> > request.application)
> > ## other login methods are in gluon/contrib/login_methods
> > #########################################################################
>
> > crud.settings.auth = None                      # =auth to enforce
> > authorization on crud
> > @@END@@
>
> > openhttp://127.0.0.1:8000/admin/default/peek/welcome/models/db.py
>
> > # then we create a custom model
> > edit models/db_pos.py
> > # we need a table to store products
> > db.define_table('product',
> >   Field('name',notnull=True,unique=True),
> >   Field('price','double'),
> >   Field('description','text'),
> >   Field('image','upload'),
> >   Field('sortable','integer'),
> >   auth.signature,
> >   format='%(name)s')
>
> > # and one table to store sales of products to users
> > db.define_table('sale',
> >   Field('invoice'),
> >   Field('creditcard'),
> >   Field('buyer',db.auth_user),
> >   Field('product',db.product),
> >   Field('quantity','integer'),
> >   Field('price','double'),
> >   Field('shipped','boolean',default=False),
> >   auth.signature),
>
> > # we also make a session cart, just in case
> > session.cart = session.cart or {}
> > @@END@@
>
> > # we can now already access the model via app-admin
> > # try create some products
> > openhttp://127.0.0.1:8000/pos/appadmin
>
> > # we can also create prducts programmatically here is one way
> > mkdir private
> > cd private
> > #  let's get an image
> > wgethttp://www.clker.com/cliparts/5/1/9/a/11954319101307220149molumen_car...
> > sh:convert 11954319101307220149molumen_cardboard_box.svg.med.png
> > box.jpg
> > open box.jpg
> > cd ..
> > edit private/script.py
> > import os
>
> > # find the box
> > path = os.path.join(request.folder,'private','box.jpg')
>
> > # insert it in a database record
> > id = db.product.insert(name='Box',price=2.99,description='the best
> > box',
>
> > image=db.product.image.store(open(path,'rb'),path))
> > print 'record created, id=',id
>
> > # and do not forget to commit
> > db.commit()
> > @@END@@
>
> > # now let's run it
> > cd ../..
> > python web2py.py -S pos -M -N -R applications/pos/private/script.py
> > cd applications/pos
>
> > # let us write a controller with the actions we need
> > rm controllers/default.py
> > edit controllers/default.py
> > # list of products
> > def index():
> >   products = db(db.product).select(orderby=db.product.sortable)
> >   return locals()
>
> > # login, registration, etcetera
> > def user():
> >    return dict(form=auth())
>
> > # an action to download uploaded images
> > def download():
> >    return response.download(request,db)
>
> > # an action to expose web services
> > def call():
> >    session.forget()
> >    return service()
> > @@END@@
>
> > # let us try listing the products we created
> > openhttp://127.0.0.1:8000/pos/default/index
>
> > # let us make this better by creating a view
> > rm views/default/index.html
> > edit views/default/index.html
> > {{extend 'layout.html'}}
> > <h1>Products</h1>
> > {{for p in products:}}
> >  <div>
> >    <h2>{{=p.name}} - ${{=p.price}}</h2>
> >    <img src="{{=URL('download',args=p.image)}}" align="right"/>
> >    {{=MARKMIN(p.description)}}
> >  </div>
> > {{pass}}
> > @@END@@
>
> > openhttp://127.0.0.1:8000/pos/default/index
>
> > # and we make a simple menu
> > edit models/menu.py
> > response.menu=[
> >   (T('Home'),False,URL('default','index')),
> >   (T('Cart'),False,URL('default','cart')),
> >   (T('Buy'),False,URL('default','buy')),
> > ]
> > @@END@@
>
> > openhttp://127.0.0.1:8000/pos/default/index
>
> > # now we create some more logic for our app
> > edit controllers/default.py
> > # list of products
> > def index():
> >   products = db(db.product).select(orderby=db.product.sortable)
> >   return locals()
>
> > # login, registration, etcetera
> > def user():
> >    return dict(form=auth())
>
> > # an action to download uploaded images
> > def download():
> >    return response.download(request,db)
>
> > # an action to expose web services
> > def call():
> >    session.forget()
> >    return service()
>
> > # an action to see and process a shopping cart
> > @auth.requires_login()
> > def cart():
> >    return dict(cart=session.cart)
>
> > # this is for paying
> > @auth.requires_login()
> > def pay():
> >    form = SQLFORM.factory(Field('creditcard'))
> >    if form.accepts(request,session):
> >        for key, value in session.cart.items():
> >            db.sale.insert(buyer=auth.user.id,
> >                           product = key,
> >                           quantity = value,
> >                           price = db.product(key).price,
> >                           creditcard = form.vars.creditcard)
> >        session.cart.clear()
> >        session.flash = 'Thank you for your order'
> >        redirect(URL('index'))
> >    return dict(cart=session.cart,form=form)
>
> > # an action to add and remove items from the shopping cart
> > def cart_callback():
> >    id = int(request.vars.id)
> >    if request.vars.action == 'add':
> >        session.cart[id]=session.cart.get(id,0)+1
> >    if request.vars.action == 'sub':
> >        session.cart[id]=max(0,session.cart.get(id,0)-1)
> >    return str(session.cart[id])
> > @@END@@
>
> > # we add a button from the index page
> > edit views/default/index.html
> > {{extend 'layout.html'}}
> > <h1>Products</h1>
> > {{for p in products:}}
> >  <div>
> >    <h2>{{=p.name}} - ${{=p.price}}</h2>
> >    <img src="{{=URL('download',args=p.image)}}" align="right"/>
> >    {{=MARKMIN(p.description)}}
> >    <span id="item{{=p.id}}">{{=session.cart.get(p.id,0)}}</span> in
> > cart - <button
> > onclick="ajax('{{=URL('cart_callback',vars=dict(id=p.id,action='add'))}}',
> > [],'item{{=p.id}}')">add to cart</button>
> >  </div>
> > {{pass}}
> > @@END@@
>
> > # and a view for the cart so visitors can see their products
> > edit views/default/cart.html
> > {{extend 'layout.html'}}
> > <h1>Your Shopping Cart</h1>
> > <table width="100%">
> >  {{for id, qty in cart.items():}}{{p=db.product(id)}}
> >  <tr>
> >    <td>{{=p.name}}</td>
> >    <td>${{=p.price}}</td>
> >    <td id="item{{=id}}">{{=qty}}</td>
> >    <td><button...
>
> read more »

Reply via email to