Any good (free) text-to-speech engines out there? - ruby-on-rails

I've been scouring the SO board and google and can't find any really good recommendations for this. I'm building a Twilio application and the text-to-speech (TTS) engine is way bad. Plus, it's a pain in the ass to test since I have to deploy every time. Is there a significantly better resource out there that could render to a WAV or MP3 file so I can save and use that instead? Maybe there's a great API for this somewhere. I just want to avoid recording 200 MP3 files myself, would rather have this generated programatically...
Things I've seen and rejected:
http://www.yakitome.com/ (I couldn't force myself to give them my email)
http://www2.research.att.com/~ttsweb/tts/demo.php
http://www.naturalreaders.com/index.htm
http://www.panopreter.com/index.php (on the basis of crappy website)
Thinking of paying for this, but not sure yet: https://ondemand.neospeech.com/
Obviously I'm new to this, if I'm missing something obvious, please point it out...

I am not sure if you have access to a mac computer or not. Mac has pretty advanced tts built into the operating system. Apple spent a lot of money on top engineers to research it. It can easily be controlled and even automated from the command prompt. It also has quite a few built in voices to choose from. That is what I used on a recent phone system I put up. But I realize that this is not an option if you don't have a mac.
Another one you might want to check into is http://cepstral.com/ they have very realistic voices. I think they used to be open source but they are no longer and now you need to pay licensing fees. They are very commonly used for high end commercial applications. And are not so much geared towards the home user that wants their article read to them.

I like the YAKiToMe! website the best. It's free and the voices are top quality. In case you're still worried about giving them your email, they've never spammed me in many years of use and I never got onto any spam lists after signing up with them, so I doubt they sold my email. Anyway, the service is great and has lots of features for turning electronic text into audio files in different languages.
As for the API you're looking for, YAKiToMe! has a well-documented API and it's free to use. You have to register with the site to use it, but that's because it lets you customize pronunciation and voice selection, so it needs to differentiate you from other users.

Related

How to add DRM on epub programmatically?

I'm searching for a method to add DRM on ePub files programmatically. Anyone know how to do that? Maybe 3rd party software?
I added DRM with following things:
if ePub is coming from server, make zip file password protected and inside HTML pages you can encrypt via AES-128. For images also you can encrypt but you need to add more code on your reader part.
if you are encrypting images, then all images must be decrypted before you load HTML page in web or browser.
If you just want to protect your books from copying, then publish them through Amazon or Apple. As long as you don't select otherwise, those bookstores will wrap the books in DRM that allows them to be read only a limited number of devices belonging to the purchaser.
If you have some reason for wanting to worry about DRM yourself, then after carefully considering why on earth you'd want to, you'll need to find a vendor who can provide both the DRM technology and the reader (perhaps white-labeled for you) which knows how to read those DRM'd books. You see, DRM is useless unless there's a reader that can read the DRM'd books. And what's more, you need a back-end infrastructure to keep track of which devices belong to which person. There are vendors who provide such solutions. However, you'll end up paying them some of the money you were trying to save by avoiding Amazon or Apple.
The pricey Adobe solution mentioned by one commenter has the advantage that it is used by multiple bookstores/reading systems, including Kobo and Sony, so if you use it, then people buying your books can read them on any of these devices--albeit with an annoying step involving some software called ADE.
If for some strange reason you are thinking of building this entire infrastructure yourself, all I can say is, good luck.
More generally, even if you work through Amazon or Apple, it's well worth stepping back and thinking if you really want to do DRM or not. It's a natural human instinct to think, "By golly, I'm not going to let anyone steal MY book!!", but many of the people that might pirate a non-DRM'd book would not have paid money in the first place, so it's hard to say you're actually "losing" money. And someone who pirated the book might then Tweet or tell their friends about it and you'll end up selling more books than otherwise. Finally, someone who really wants the book without paying will crack the DRM anyway, as another commenter noted.

Using ATOM, RSS or another syndication feed for paid content

I work for a publishing house and we're discussing different ways to sell our content over digital channels.
Besides the web, we're closely watching the development of content publishing on tablets (e.g. iPad) and smartphones (e.g. iPhone). Right now, it looks like there are four different approaches:
Conventional publishing houses release Apps like The Daily, Wired or Time Magazine. Personally I name them Print-Content-Meets-Offline-Website Magazines. Very nice to look at, but slow, very heavy regarding datasize and often inconsistent on the usability side. Besides that: These magazines don't co-exist well in a world where Facebook and Twitter is where users spend most of their time and share content.
Plain and stupid PDF. More or less lightweight, but as interactive and shareable as a granite block. A model mostly used by conventional publishers and apps like Zinio.
Websites with customized views for different devices (like Die Zeit's tablet-enhanced website). Lightweight, but (at least until now) not able to really exploit a hardware platform as a native app can.
Apps like Flipboard, Reeder or Zite go a different way: Relaying on Twitter-, Facebook- and/or syndication-feeds like RSS and Atom, they give the user a very personalized way to consume news and media. Besides that, the data behind it is as lightweight as possible, the architecture to distribute the data is fast and has proven for years to be reliable.
Personally, I think #4 is the way to go. Unluckily the mentioned Apps only distribute free content and as a publishing house we're also interested in distributing paid content.
I did some research googled around and came to the conclusion, that there is no standardized way to protect and sell individual articles in a syndication feed.
My question:
Do you have any hints or ideas how this could be implemented in a plattform-agnostic way? Or is there an existing solution I just haven't found yet?
Update:
This article explains exactly what we're looking for:
"What publishers and developers need is
a standard API that enables
distribution of content for authorized
purposes, monitors its use, offers
standard advertising units and
subscription requirements, and
provides a way to share revenues."
Just brainstorming, so take it for what it's worth:
Feedreaders can't do buying but most of them have at least let you authenticate to feeds, right? If your free feed was authenticated, you would be able to tie the retrieval of atom entries to a given user account. The retrieval could check the user account against purchased articles and make sure they were populated with fully paid content.
For unpurchased content, the feed gets populated with a link that takes you to a Buy The Article page. You adjust that user account and the next time the feed is updated, the feed gets shows the full content. You could even offer "article tracks" or something like that where someone can by everything written by a given author or everything matching some search criteria. You could adjust rates accordingly.
You also want to be able to allow people to refer articles to others via social media sites and blogs and so forth. To facilitate this, the article URLs (and the atom entry ids) would need to be the same whether they are purchased or not. Only the content of the feed changes depending on the status of the account accessing the feed.
The trick, it seems to me, is providing enough enticement to get people to create an account. Presumably, you'd need interesting things to read and probably some percentage of it free so that it leaves people wanting more.
Another problem is preventing redistribution of paid content to free channels. I don't know that there is a way to completely prevent this. You'd need to monitor the usage of your feeds by account to look for access anomalies, but it's a hard problem.
Solution we're currently following:
We'll use the same Atom feed for paid and free content. A paid content entry in the feed will have no content (besides title, summary, etc.). If a user chooses to buy that content, the missing content is fetched from a webservice and inserted into the feed.
Downside: The buying-process is not implemented in any existing feedreader.
Anyone got a better idea?
I was looking for something else, but I've came across with Flattr RSS plugin for WordPress.
I didn't have time to look it through, but maybe you can find some useful ideas in it.

Google event tracking used by a Delphi desktop application

I've come to a crazy idea to use Google event tracking in Delphi desktop application. I want to track users behaviour workflow to make application better. But it's in javascript.
Is it possible somehow to do it directly from application? Or do I need for example to make a webpage which communicates with Google event tracking API and application sends REST queries to that webpage?
Or maybe I can do it without javascript at all and directly from application?
You should be very careful with this, and warn your users.
Though software running locally is a different thing than software running from a web-site in a browser, the interconnectedness of software is increasing. So is the general feeling in the public on what is right and not to communicate.
For instance, a lot of software 'phones home' to check for the latest version without even asking permission to their users. I can understand that some users have a problem with that, but it indicates the general opinion on this is shifting. The vendors can track usage statistics based on that 'phone home' alone.
I'm not sure if the Google Event Tracking would be the best way to solve usage tracking from a desktop application, but the general idea (collecting usage statistics and error information) can work out very well.
Software from big vendors have been getting usage statistics from their software for years, and they ask their users up-front if sending statistics is OK, and at the time of an error, each time ask them if that is OK too.
In fact the book "Why Software Sucks ... and What Can You Do About It" and presentations from David Platt explains really well how to do this and how to communicate this to your users.
You need to do this in a very anonymous way, and you can because basically you are interested in these things:
what is the largest percentage of errors
what is the largest percentage of features used
what is the smallest percentage of features not used
As long as you communicate percentages, it is clear to explain to your users that the data will be very non-specific.
On the other hand: being able to focus on the actual errors can improve your software a lot.
The errors communicated back to you can contain much detail, so you need to either strip that detail out, or be very upfront with your users indicating which details are being sent to you when communicating individual errors.
--jeroen
I developed my own solution (I called it 'softmeter') to do exactly this. It is a dll that will do all the REST queries to Google Analytics.
There is sample Delphi code that wraps the DLL in a Delphi class so sending an event is simple as
dllSoftMeter.sendEvent('Conversion events', 'Donate clicked', 1);
If you do not mind using 3rd party libraries, you can use it.
In fact I found that most software using it, is Delphi made software.
Here is a more extended sample of the Delphi code for the implementation.
https://www.starmessagesoftware.com/blog/track-delphi-pascal-gui-application-google-analytics
You will need of course to get consent from the end-user.

Is there a way to read a browser's history, using Adobe AIR or any other tool?

First of all, I'm not a hacker :)
We're doing a project where we'll award points to users for visiting certain groups of sites.
Obviously there are major privacy concerns, but we have no interest in actually knowing where they've been, just as long as the program we create can check the history and through an algorithm, rank the site/user.
This would be a downloadable application and we'd tell the user how it worked, since transparency is vital.
Now, with that in mind, is there a way for a local program to access the Cache/History of a browser and make a list out of it?
I've read that Firefox uses SQLite to compile their History, which could potentially be parsed using Adobe AIR.
At the same time, Adobe AIR has access to the filesystem, so it could probably check if the usual IE temporary folders have any files stored. If so, try to read the URL they were downloaded from?
I know all of this sounds very dodgy, but try to keep an open mind :)
Thank you all for your help.
Not a full answer to your question, but you might be interested in the CSS History hack. If you already KNOW the sites you want to rank, you will be able to find out which sites the users visited.
Good thing you said something about a LOCAL program, because there are surely ways to read out the SQLite database from Mozilla and IE's history and you can find plenty of implementations using your favorite search engine.
Particularly easy to use are Nirsoft's utilities MozillaHistoryView and IEHistoryView which you could script to output CSV and parse that file afterwards.

Do you chat online for work purposes?

I've worked with folks who are chatting online with their peers, constantly batting around ideas. I've also worked with folks who adamantly refuse and think it's a waste of time.
Are online live chatting forums of particular use to you? Why or why not?
Internal to your company, or external and world-wide?
Does your employer encourage or discourage their use?
Update: I see some people are voting this question down, yet so far all the answers have been positive, if with some reservations. If someone has a strong negative opinion (I hate online chatting and think it should be banned etc.) I'd really like to hear why.
If you have telecommuters, not chatting online will be the death of you.
Without chat, there is no interaction.
Without interaction, there is no problem solving.
Without problem solving, the code will suck.
The chatting part does waste a lot of time and I often wish I could just pull them out and just WriteSomeCode, but yeah, trade off scenario.
There's an additional benefit to using online converstations, in that it doesn't /have/ to be an interruption. If your working on something you can ignore them till you're done and they just have to deal with it. In real life you have a talking face to try get rid of. ( And the cool thing here is you can ignore them and they still get heard, have your cake and eat it too! )
I've used IM at the last three places I have worked. Currently the building that I am in is so large that it takes a couple of minutes just to walk to my managers office. Then there are the days that we work from home (1-2 days a week). Email for some purposes just doesn't cut it and the phone can be too disruptive and all encompassing for some tasks.
When I was doing consulting work I would give my IM contact information to my clients. About 25% of them would use it to contact me and I am still in contact with them to this day which opens up the possibility for future work! The clients that used IM felt that they had a better connection with me because they could see when I was online and available to talk.
I'm still in contact with old work colleagues through IM and this allows me quick access to their knowledge base as well.
My suggestions for using IM in the workplace are:
Use a client that supports multiple
protocols (MSN, Yahoo, AIM, Jaber,
etc)
Setup and use personal accounts for
each of the networks you are on
(i.e. don't use accounts tied
directly to your work)
Make sure your IM client records a
history of all of your conversations
Always be available but minimize
personal conversations
Provide your IM information freely
to friends, clients, and colleagues
Add appropriate groups (i.e.
friends, family, work) and filters
to reduce undesired interruptions
while still being available if
needed
Don't feel that you have to
respond to every chat request. Let
it set until you are ready to deal
with it
One other trick I use is to use text to speech software so that when a chat message comes in it is read allowed. When I am at home (or preoccupied away from the computer in the office) the message is automatically read allowed (I liken it to a ringing phone call) in order to get my attention. But, I don't have to stop what I am doing in order to know what the message is.
I used to. I found it a great resource to chat with people I used to work with. In our business I find that we tend to network alot and using that collective knowledge is awesome. Of course my company turned that off so they lose.
I know that a certain large Bank hasd an internal AIM setup so that they can IM each other. That was refreshing and dang useful. They also allowed some external access. Talk about getting the value of IM!
Yes, absolutly, I work with most of my employees, and employers via MSN/Yahoo/Skype/.../ it makes the work easier, because I can hire the better people without having to pay them to move to me.
When I need to collaborate with someone in another office, it's great ... when I'm deep in thought, I have to turn it off (just like e-mail).
It depends on the group dynamics and personal preferences. Personally, I have enjoyed my work groups that use chat to feed on each other's ideas and troubleshoot without as much walking around. If you are geography dispersed, its almost a necessity.
I find online chatting invaluable in many cases, but not normally instant messaging. Since I use many open source technologies at work, I tend to join the respective IRC channels, both to ask questions there, and sometimes to help others if I know the answer offhand.
It may depend on the work environment. As a self employed consultant, I'm always in chat - it's my primary communication to the world, along with emails for more official type communications.
Being able to converse with others creates synergy, but it also can cause distractions. A good manager can tell the difference.
At my last workplace, we used IM extensively for collaboration. Not so much at my present workplace. Infact, i have not once had to do that here in 6 months. But i do look around on the net for answers and sometimes i have posted queries on forums too. IM is a nice tool to have, but its also a time sink. Also, dont underestimate the lost focus. Its particularly hard to concentrate on getting that algo implemented right if someones constantly pinging you about how to establish a connection to an oracle database.
I work at home 2 to 3 days a week. I mainly use MSN to stay in touch with my coworkers. It's pretty useful to ask short questions quickly. If we find ourselves typing whole conversations we often agree to continue the conversation by phone.
I use IM to communicate with colleagues in other offices when it replaces a face-to-face chat. I turn off notifications in all my comms apps at work though, because they distract me otherwise.
I telecommute from California to Colorado and never have used chat. We do have daily SCRUM meetings and constant email threads. When I first started working remotely, we did try it but it seemed intrusive to several co-workers so we stopped using it, that was 4 years ago, I probably should give it another try.
It seems I have nothing to really add to what hasn't already been written.
I use it extensively, especially when remote people are involved in development. Without it your real time communication dies. It is the only viable method of communication that isn't as interruptive as phone calls or something of that nature. As we all know we can't just sit on the phone the whole time when developing, so chat is the next best thing for real time communication.
I personally don't like it. I think email allows you to take a little time to compose your thoughts.
IM seems to work for other people though. Whatever works!
Our entire business unit telecommutes. Only us first years are required to be in the office, so our enterprise IM solution is vital to staying in touch and on task. Its how my manager lets me know what project I'm working on, if I need to bill my time to another customer, or if I need to bounce ideas around. So yes, I do. Is it open for anyone to get on? No, not at all. You have to be on the intranet to access the system, and it is closed to any and all outsiders.
Out of the four professional jobs I've had over the past 8 years or so, I've only worked at one place that did not allow any type of instant messaging. All the other companies had at least some type of setup for intranet instant messaging.
I think that IM is almost necessary in today's business environment. I don't IM very much, but it's nice to have it available. Especially when I just need a quick answer to a question - like "Where is this file located?" and then boom I have a link to the file pop up right in front of my face.
I use IRC at work - it's almost a requirement for all of us who interact remotely (workign from home, different offices, and client sites) to be able to get help on problems fast.
Yup. It's actually required here. But only MSN though. We use it for development/task related communications with the team... which also help minimize noise since this company I'm currently working in is a big one where 90% are developers so utter silence is a MUST...
But if I've got questions to other members of the team, I prefer asking it personally though because I find it hard to explain some things when just chatting...
I've had to use it in my last job as my co-workers lived in the UK and my boss worked in California whereas I'm in Atlanta. It was used for quick questions and when it was "whenever you get the chance to respond" type thing. I could be on the phone and an IM pop-up and they would get an automatic message telling them that. Longer discussions were done with web cam and telephone and the ability to share a desktop to view code, data, etc.
My company won't allow it. Even if we run a IM server in house (so we aren't wasting time chatting with friends). I've tried to convince them, I find it really useful for knowing if someone is at their desk or not. The phones don't do that so well since if you don't pick up it redirects to a secretary that will get pissed if you are checking if someone's back every 5 min...
So I run a IM client on my phone so I can at least chat with a few people through out the day. (Less interrupting to others if my wife IMs me vs calls me and also easier to ignore if I need to).

Resources