When I started looking for a licensing solution for my Windows desktop application, Text2Go, I came up with the following requirements.
- Must not be hardware-locked. I didn’t want a support call every time someone upgraded their PC and they needed a new license issued for their new hardware.
- Must be simple to activate a license. Entering a 32 character alpha-numeric license key always seemed very tedious and error prone.
- The license should contain some personal information, such as the customer name and address. This would hopefully discourage customers from ‘sharing’ their license with others if it could easily be traced back to them.
- Must be a .NET solution as my app is written in C#.
- Being a microISV, the license system must be reasonably priced.
After lots of research I found the perfect solution in .Net Reactor. Instead of using license keys, it used a license file. You could embed all sorts of arbitrary customer information in the license file which could be extracted and displayed in your application. Not only did .Net Reactor provide a licensing system, including support for trial periods, but it also offered quite sophisticated code obfuscation and protection. It was a complete solution and it was very reasonably priced at ~$200.
In order to embed customer information into a license file, the license file had to be generated at the time of purchase. It’s obviously not possible to pre-generate licenses if each needs to contain personal information. This meant some sort of integration with the payment processor was required. Luckily .Net Reactor provides a license generator for ShareIT. As soon as an order is processed, ShareIT runs the license generator to create a personalized licensed file, which is then emailed to the customer.
Choosing the .Net Reactor licensing system meant that it made sense to choose ShareIT as a payment processor. I was quite happy to do this. Their fees were reasonable and they provided all the features I needed.
Now you may be thinking that this is a very neat solution that ticks all the boxes. For a while I believed this to be the case to. Customers purchased Text2Go and their personalized license file was emailed to them automatically. They didn’t need to enter a long license key. Instead they only needed to save the attached license file into the same directory as my application and restart it.
What could be simpler than that? Well a lot of things it turns out, including entering a 32 character alpha-numeric license key.
Early Signs There’s a Problem
I started to get the odd email from customers who couldn’t work out how to license Text2Go. Initially I just sent them a short email explaining exactly what to do and this fixed their problem.
At the time I assumed the customer simply didn’t bother to read the instructions they received in their license email. One of the problems was that although ShareIT allows you to customise the license email sent to the customer (i.e. so you can include clear instructions on how to license your application), they insist on including a huge amount of their own legal jargon both before and after the customisable section. This means the email sent to the customer ends up looking like the fine print for an insurance contract. I don’t blame anyone for taking one look at it and thinking I’m not going to read this.
I contacted ShareIT and asked if it was possible to fully customise the licensing email sent to customers. Their response was a flat no. They didn’t even promise to consider it as a future enhancement. What annoys me is that every few months they send out an email announcing new enhancements they’ve made to their system. All they ever announce are new, sleazy ways to upsell worthless services or better ways to manage affiliates. Nothing that ever improves the experience for the customer.
I should have switched payment processors at this point but because the .Net Reactor license key generator only worked with ShareIT I was effectively locked in. I still believed saving a license file to a folder was easier than entering a registration key.
I’m embarrassed to say this sad situation continued for a couple of years. It wasn’t causing me enough pain to justify completely redoing my licensing system and switching payment processors.
The Final Straw
Eventually there were three incidents that made me realize enough is enough. The first was a customer who just could not work out how to save their license file into my application folder. In the end I arranged a time and connected to his PC using the remote desktop application Copilot and licensed it for him. He was very grateful for the personal service but it was a unnecessary waste of both our time.
It was at this point I realised that some people don’t understand what an attachment is and how to save it to a location on their hard drive. Some would try to open it and then their PC would complain that it couldn’t find the associated program for this type of document (the license file had a .license extension). Matters were made worse by the increasing popularity of web mail clients and their less than friendly handling of attached files.
The second incident occurred during a recent Bits Du Jour sale. I sold a lot of licenses during this period but also had a corresponding increase in support emails from new customers asking how to frickin’ activate their license. This clearly illustrated that not only was there a useability problem but as my sales increased there would be a corresponding increase in support requests. My current solution was not going to scale.
If this wasn’t enough evidence that something needed to be done, I received two emails from a frustrated customer. They were both received on the same day and sent to different email accounts. It’s always a good indicator a customer is pissed when they send multiple emails to different accounts in a short space of time. This is doubly true when each email is uniquely worded. Copy and paste is not nearly as satisfying when you’re venting your frustration.
There’s a temptation to focus on ways to attract new customers rather than improving the experience for existing users. It’s also very easy to adopt an attitude that a certain section of your users will be ‘technically challenged’ and they’ll always have problems. It’s their problem, not yours. I have to admit that in this instance I’ve been guilty of both crimes.
Once I made the decision to overhaul my licensing system, I decided to rebuild it from ground up. The overriding goal was to make it incredibly simple to license Text2Go. In fact, I felt so guilty for the needless frustration I’d inflicted on a significant percentage of my users, I not only wanted it to be incredibly simple, I also wanted it to leave the customer with a warm, fuzzy feeling. They deserve nothing less. They’ve just paid me real money.
Here is the set of requirements my new licensing system must meet.
- A simple license key based system
- Use pre-generated keys. This doesn’t mean anything to the end user but it does mean I’m now free to choose any payment processor. No more vendor lock-in. I can choose a payment processing company that provides the best experience for the customer.
- Provide a simple means for the customer to license Text2Go without needing to enter the license key.
- Don’t require a restart of Text2Go.
The New Licensing Solution
I’ve kept .Net Reactor to do my code obfuscation and protection. I’ve just turned off its licensing system and replaced it with the Infralution licensing system. I’d heard very good reports about this system and haven’t been disappointed. In addition to the key based licensing system, it also includes code to run a time-based trial period for your software. You get the C# source code for the licensing technology that you need to embed in your application. This means you don’t need to ship yet another DLL.
It also includes a sophisticated License Tracker application that allows you to track sales and customers. As its name suggests its main purpose is to keep track of each customer’s license key. It has a powerful import feature that can import sales data from all the leading payment processors, including ShareIT. It can also import sales information from emails in Outlook.
This tool means I can always reissue the same license key to a customer, should they lose their key. It also means I can trace a license key back to an individual customer, in case it appears ‘in the wild’.
The changes I’ve made to Text2Go have been relatively small. I’ve added a ‘Register…’ menu command and an associated dialog box that allows the user to enter a license key.
When the user enters a valid license key I do a couple of things to demonstrate my appreciation and hopefully leave the customer with a good feeling about purchasing Text2Go.
I display a thank you message, along with a picture of a rose. I also play a very short set of musical notes, similar in some ways to the Windows startup sound or a powerup sound effect in a game.
Small things I know but I hope it leaves the customer with a positive feeling.
One of my goals was to provide a way for the customer to avoid having to manually enter a license key. For sophisticated users this is no major burden. They just copy the license key from their purchase email and paste it into the licensing dialog.
For less sophisticated users I can see two problems with this. The first is that some people will have trouble finding the ‘Register…’ command. Like looking for the tomato sauce bottle in the pantry, sometimes you just can’t see something even when it’s right in front of you.
The second problem is some people will have no idea how to do a copy and paste. They’ll have to manually enter each character. It will be tedious and error prone but unlike the licensing file, they will eventually manage it.
Painless License Key Registration
I’ve come up with a rather neat solution that will register Text2Go simply by clicking on a URL in the purchase email. No hunting for the registration dialog or entering a registration key.
In the last major release of Text2Go I built in a very simple web server. This was added to provide integration with all the major web browsers. What it allows me to do is issue a command to Text2Go through any web browser’s address bar. People have talked about the address bar being the new command line. This is quite literally the case for Text2Go.
For example, to register Text2Go I use a URL in the following form.
You can see that 61061 is the port Text2Go listens on, register is the command and it has a single key argument.
When the user clicks this link, their browser is started which will in turn send the request to Text2Go. Text2Go will validate the supplied key argument. If it’s valid, Text2Go is registered. The same registration sound is played but instead of the thank you message being display in a dialog box it’s returned as a web page. It the key is invalid, then the returned web page states this fact.
If anyone’s interested in using this technique for their own application, you may want to read the article I wrote for Code Project.
Resetting a 30-day Trial
Anyone who provides a 30 day trial for their software will know they get the occasional request to extend the trial beyond the initial 30 day trial period. This is almost never because someone’s trying to game the system. Instead it’s most often because someone has downloaded and installed your application, tried it for a couple of seconds and then got distracted. It’s not until a month later that they get some time to get back to it and give it another try. Unfortunately by this time, their 30-day trial has expired. It’s at this point you will get an email asking for an extension to their trial.
The Infralution licensing system provides a method to reset the trial period. The trick is working out a way of calling this method. You can’t just add a Reset Trial button to you UI or everyone will use it to extend their free trial period indefinitely.
I want to be able to send the customer a URL they can click to reset their trial period. However I can’t allow this URL to be used over and over to extend a customer’s trial. Therefore what I do is pass today’s date as part of the URL. When Text2Go receives the request it checks the date supplied is either today’s date or has occurred within the last 7 days and will only reset the trial if it falls within this period. This gives the customer one week to reset their trial period. After that time, the URL will no longer work. The date passed as part of the URL needs to be encrypted in some way. Otherwise the customer could easily change the date, once again giving them a way of indefinitely extending their free trial period.
To achieve this I wrote a very simple program that combines a date with a secret password and generates an MD5 hash.
It’s this hash that is passed to Text2Go. Text2Go also knows the secret password. It performs the same calculation, combining a date with the password to generate a hash code. If the two MD5 hash codes match, then it must be valid and the trial period can be reset. If it doesn’t match, it generates a hash for the previous day and checks again. It will do this for up to 7 days. Note that because MD5 is a one-way hash, it’s not possible to extract the actual date. All that can be done is to try to reproduce the hash code by trying a number of different dates. This is perfect for our situation as we only ever need to try 7 dates.
One of the other problems I had was what to do with existing customers. They are all using a version of Text2Go that uses the old file-based licensing technology. I didn’t want to support two licensing mechanisms so I decided to migrate them to the new licensing system.
This meant generating a license key for each customer and mailing them their key. Due to the number of existing customers, this needed to be automated.
The License Tracker application has a very powerful feature for importing customer and sales data from payment processors, such as ShareIT. I can export my sales data from ShareIT as an XML report and then import it into License Tracker. However none of these orders will have license keys assigned to them, as I was using the file-based licensing system at the time the orders were generated.
I needed a way of assigning a license key to each order before importing it into License Tracker. To do this I created a simple application that would take a list of license keys, scan the XML sales report and assign a license key to each order. Now when the sales data was imported into License Tracker, each order had an Infralution license key assigned to it.
I then wrote a second application that would scan the XML sales report (that now included license keys) and for each customer, extract their name, email address and license key and send them an email containing their license key. They could use this key to relicense Text2Go when they upgraded to the new version.
Finally Free to Switch Payment Processors
Once I’d switched to pre-generated keys I was free to switch payment processors. I have changed to FastSpring and couldn’t be happier. Their system allows a fully customisable email to be sent to purchasers. Now I can send just the instructions needed to license Text2Go, which are now not much more than ‘click this link and you’re done’. Their order page customisation is also very flexible, although I don’t really make full use of this as I have my own shopping cart page and just jump directly to the FastSpring checkout page.
The FastSpring administrators’ interface is a joy to use. It has a gorgeous web 2.0 look and more importantly is very responsive. It’s layout is all very logical and it has really useful context sensitive help on each page. I found this was more than adequate and didn’t have to read through their user manual at all.
FastSpring prides themselves on great support and that’s definitely been my experience. Their staff are all very knowledgeable and they respond within a few hours, even on weekends.
In summary, here are some of the lessons I’ve learnt.
- Keep your licensing system as simple as possible. It only needs to be sophisticated enough to keep honest people honest.
- Be very careful when choosing any solution that locks you into a single vendor. Work out how much effort/pain it’s going to cause you to get out.
- Work to keep your existing customers happy rather than always trying to win new customers.
- Continually work on improving useability and removing confusing areas of your application, including areas that only affect a small percentage of your user base.
One thing I was curious to investigate was whether they’d made any changes to the text to speech functionality and Narrator in Windows 7.
The first problem I ran into was where had they moved the text to speech options. There’s no longer a Text to Speech applet in the Control Panel. If you view the Control Panel by Category you have to first click on the Ease of Access category.
Then you need to select Ease of Access Centre.
You’re then presented with the following confusing dialog, ironically titled Make your computer easier to use.
You need to select Use the computer without a display.
Now click on Set up Text to Speech.
This is the same familiar dialog that’s been around since Windows XP. No changes here and unfortunately it’s now been buried in the most obscure location.
Now there is a quicker way to access the Text to Speech settings dialog but it’s even less intuitive than the above, if that’s possible.
First you will need to switch your Control Panel view from Category to Large icons or Small icons. Then click on the Speech Recognition applet – yes I know speech recognition is the opposite to text to speech, bare with me.
You can see in the left column there is a Text to Speech link, kindly included for wayward travellers. This will bring up the text to speech options. It’s much quicker to access but so unintuitive, you’ll have a hard time remembering it.
Microsoft really need to bring back the Text to Speech applet and display it in the Control Panel when viewing by Large or Small icons. Here’s hoping they add this back in before the final release of Windows 7.
I was also hoping that they would have included a male voice as well as the female voice, Microsoft Anna, that comes with Vista. Many people have complained that they lost the male voice, Microsoft Sam, when moving from XP to Vista, even though Microsoft Anna sounds a lot better than Microsoft Sam. Microsoft, I hope you’re listening.
I have an EeePC 1000H which I use every day on the train. It has a 10″ screen, a full size keyboard, 1GB of RAM and a 160GB hard drive. It’s light, compact, has great battery life and powerful enough to run all my favourite apps. It came with Windows XP. When Microsoft released Windows 7 RC 1 the other day, I decided to repave my EeePC with this shiny new OS.
The first thing I did was upgrade the RAM from 1 to 2 GB. The RAM is very cheap (it cost me AU$70, although I hear you can buy it for around $20 in the US) and the upgrade is simplicity in itself. See this excellent guide for details.
I downloaded Windows 7 RC 1 as soon as it was available to MSDN subscribers. I burnt the ISO image to DVD and then copied the installation files across my home network to the second partition on my EeePC’s hard drive. As the EeePC doesn’t have an optical drive, I wasn’t sure if it would be able to successfully install directly from the DVD drive mounted across the network. I feared it would reboot during the installation and then discover it didn’t have the right network driver and no longer be able to access the installation DVD, In the end I think this was unnecessary as the installation first copies all the necessary files to the hard disk anyway.
I can’t comment too much about the installation process itself. I set it running and then went away and did something else. I’m not sure how long it took but when I returned it had finished and there were no problems. It had all the necessary drivers for my EeePC.
The most pleasant surprise I noticed was that Windows 7 was using the Aero interface. When Vista first came out there was a lot of talk around how everyone would need to upgrade their graphics cards in order to run Aero. Netbooks are not known for their powerful graphics processors and the EeePC is no exception. Not only does Windows 7 default to Aero on my EeePC, it runs like a dream. Everything feels very snappy and all the effects, such as fades and zooms are silky smooth. Gone are the piecemeal window repaints that were so common in XP and previous versions of Windows.
The most obvious change is the enhanced task bar at the bottom of the screen. It’s double the standard height (although you can change it to use small icons), allowing much larger application icons to be displayed. This has allowed Microsoft to cleverly combine quick launch icons and running applications. A running application now appears on the task bar as single, shiny icon. If you’ve pinned the application icon to the task bar permanently (equivalent to adding the application to the quick launch bar), then when you run the application, Windows simply highlights the pinned icon. Hover over the icon and a thumbnail preview of the window is displayed. If the application has multiple windows or tabs, then multiple thumbnails are displayed. This works so well that I never want to go back to the old taskbar.
Windows 7 comes with a number of desktop themes. I noticed that there was even an Australia theme. The Australian theme has a number of stunning wallpaper images, which it seems to cycle through at regular intervals. I’m not sure whether these images ship with Windows 7 or are being downloaded from Microsoft in the background. Either way, they look brilliant.
The nice thing about Windows 7 is that any application that is compatible with Vista is most likely also compatible with Windows 7. All the major architectural changes happened in Vista. Windows 7 is more about refining an existing platform to make it easier to use, faster and much better looking.
To date I’ve installed
- Office 2007
- Visual Studio 2008
- Expression Web
- Adobe Photoshop Elements 3.0
- Google Chrome
All applications run flawlessly. I thought I might have trouble with the oldest application, Adobe Photoshop Elements 3 but it seems fine. Windows 7 did block the installation of an old media driver during its installation but this is most likely a good thing rather than bad.
While talking about application compatibility I should mention that Windows 7 RC1 seems to be very stable. The only problem I’ve had to date is that after it comes out of Standby while plugged into my home network, it seems not to be able to find the network again and requires a restart. This is certainly something I can live with.
Windows 7 RC1 has won me over. That fact that it runs so nicely on my netbook means I’ll have no hesitation in using it for my new desktop PC that I hope to buy in the next month or two. Finally I can move off Windows XP. I won’t be looking back, except to remember that XP has been such a solid workhorse for so many years, too many in fact.
Windows 7 RC1 is now available as a free download from Microsoft at least until the end of June. It’s the Ultimate version which includes goodies such as Media Centre. It’s free to use for a year, after which time you’ll be able to purchase it and upgrade to the final release.
This is possibly the best marketing move Microsoft have made in years. It’s the ultimate free trial period. No one likes to reinstall their OS and applications from scratch. After using the OS for a year, you’re likely to have collected a huge number of applications and configured each to your own needs, making a reinstallation a very onerous task. Most people will likely just pay for a license to save them the hassle. It will be interesting to see if they’ll be forced to buy an Ultimate license of can downgrade it to one of the Business or Home editions? I would like to see Microsoft reward early adopters by allowing them to buy the cheapest Windows 7 license and still retain all the Ultimate functionality.
Windows 7 RC1 is also likely to find its way onto the PC’s of the most influential members of the community – the early adopters, developers, IT journalists and bloggers. The fact that it’s the best Microsoft OS ever, a big step up from Vista and a huge step up from XP is only going to win lots of friends and advocates.
It will be interesting to see if PC resellers start offering Windows 7 RC1 as an option when buying a new PC. I wonder if Microsoft would encourage or discourage this? Given that resellers are no longer forced to sell an OEM version of Windows with every new PC, I don’t see why they couldn’t. The only thing that may stop this being common practice is the fact Microsoft have placed a time limit on how long Windows RC1 will be available for download and activation. This may even prompt a rush of new PC sales before the end of June so that people can run Windows 7 RC1.
I’m very excited to be able to announce the Text2Go 3.5 beta is now available for download at Text2Go 3.5 Beta. It’s quite stable and I encourage you to download it and give it a try. Having said that, if you do find any bugs, please let us know. This new version includes the following enhancements.
- Support for Internet Explorer 8. Text2Go has it’s own accelerator that can be added to IE8. If you still using IE7 or heaven forbid, IE6, then upgrade to IE8 immediately! IE8 is a huge advance over IE7 and a pleasure to use.
- Enhanced speech playback controls for listening to text at your computer. There is now a dedicated Speak button on the Text2Go toolbar and it’s also possible to pause and resume speech playback.
- Enhanced error reporting. There is now a Support menu item in Text2Go which automatically creates a new email message and attaches a zipped copy of the Text2Go error log. This will better help us track down bugs and problems specific to your machine. The Text2Go error log is in plain text so you can satisfy yourself that it doesn’t contain any personal information.
- A few minor bug fixes.
Give it a try and let me know what you think!
Against my better judgement I downloaded and installed iTunes 8 today. I have this theory that any major new release of iTunes, especially one that coincides with new iPod or iPhone hardware is going to be a lot less stable than the previous version. Therefore I tend to wait for a couple of dot release to appear, usually in the same week before doing an upgrade.
Today however I threw caution to the wind and was pleasantly surprised. The download and install proceeded smoothly and I was up and running again in no time.
- When you click on any song in your library, a list of recommended albums and songs that are similar to your selection are displayed in the Genius sidebar. These can then be purchased from the iTunes store. You can preview recommended songs in the sidebar by clicking on the music symbol next to each song. Playback is instant and seamless, although not with high quality audio. The selection pictured is for Jack Johnson’s ‘If I Had Eyes’. You can see it’s recommended a couple of albums I don’t have, including their ratings. This is nice but not truly revolutionary. The more interesting selection is the songs from other artist that it recommends. For this particular song, it’s worked really well. When I listened to the previews, they all had a very similar sound, falling into an easy listening, tuneful, predominately acoustic style. This feature promises to be a very easy way of growing your music library.
- The other feature of Genius, which won’t cost you anything to use is it’s ability to create a Genius playlist. Again you start by clicking on a song in your library but this time if you click on the ‘Genius’ button located in the status bar at the bottom right of iTunes, it will create a playlist containing a selection of similar sounding songs from your own music collection. Again it does quite a good job of picking similar songs. One thing that wasn’t obvious was how to transfer the Genius playlist to your iPod. It turns out that you don’t. Instead you can save the current contents into a new playlist (using the ‘Save Playlist’ button in the Genius playlist titlebar). By default it’s given the name of the song used to seed the playlist. Once created, sync your iPod and it will appear just like any other.
According to Apple, the Genius feature will learn over time as more and more people start using the feature and it collects more information about the makeup of everyones music collections.
The other major change in iTunes 8 is a visual one. The album display has been revamped to remove the wasted space that was present in the previous version of iTunes. One thing that caught my eye was the flashy new genre display.
Nice, but what does it do when it encounters an unknown genre, like the Text2Go genre that Text2Go uses to classify all the text to speech tracks that it produces. Of course, it just displays the standard grey music symbol, as it does when an album doesn’t have any associated album art.
I wasn’t very happy about this, so I thought I’d look under the covers and see if I could add my own graphics to iTunes genre display. As you can see from the screenshot, you can and it’s not very difficult.
First you need to create a 256 x 256 pixel jpg image and save it into the following folder.
The existing genre image files are present in this folder and are named as follows:
The final step is to add an entry to the file genres.plist, also found in this folder. The file is in xml format, so it’s very easy to understand and edit. Here is the entry I added for the Text2Go genre. The matchString is used to specify the genre name and the resourceFile specifies the image file to use.
<dict> <key>matchString</key><string>Text2Go</string> <key>resourceFile</key><string>genre-Text2Go.jpg</string> </dict>
Save your changes, restart iTunes and your image will be used for the genre.
Overall I’ve been pleasantly surprised by the new features in iTunes 8, especially the ability of Genius to create a playlist to match any song in your music library.
Text2Go users can download an image for the Text2Go genre and follow the above instructions now. I’ll add an extra step to the installation script in the next version of Text2Go to do this automatically.
The beauty of using your iPod is you can transport a huge music collection on a very small device. There is no need to continually change CDs or tapes (does anyone still use these?). You can clear out your glove box, center console, or boot and get rid of that CD sleeve you’ve strapped to your sunvisor. When you park, it’s easy to pickup your music collection and take it with you, eliminating one of the most common targets for thieves.
I’m going to start with the least sophisticated (read cheapest) and work up to the most sophisticated (costs more than your iPod). Feel free to skip over options you’re not interested in.
1. No Integration (free)
The cheapest way of listening to your iPod in the car is simply to place it on the seat beside you and use the earbuds. If you use the standard Apple earbuds, you’ll still be able to hear plenty of road noise, horns, sirens, etc to make this a safe option.
- Costs nothing
- Excellent sound quality
- Only one occupant can listen
- Not easy to control playback while driving
- Earbud cable often pulls and can get tangled with the seatbelt when exiting the vehicle
- Not convenient if you’re frequently getting in and out of the vehicle
2. Connection with an existing radio cassette player ($19.95)
If you have an old car stereo that plays tapes, you can purchase a special connector that fits into your cassette deck. It looks exactly like a regular cassette, except that it’s got an audio cable coming out one end that you can plug into your iPod or MP3 player headphone jack. Your car stereo thinks it’s playing a cassette but it’s actually receiving the audio signal from your iPod rather than magnetic tape. All control of the audio playback is done via your iPod. Don’t expect to be able to fast forward the cassette and have the iPod recognize this command.
- Easy Setup
- Average audio quality
- All playback control must be done through your iPod
- iPod in plain sight and needs to be removed every time you park your car
- Requiring a mechanical device to playback digital audio just seems wrong
3. FM transmitters ($80-$120)
For existing car stereos that don’t have a cassette deck, an AUX-in port (see option 4) or a CD changer port (see option 5), this is your only option short of chucking out your old car stereo and replacing it with something designed this century. These devices integrate your iPod with your car stereo using its FM tuner. They contain a very weak FM transmitter that will broadcast the sound from your iPod on a free FM channel. You tune your car radio to this channel and hey presto, you can hear your iPod. The biggest problem with these units is finding a free FM channel. This can be a real problem in some cities. There are a huge number of these devices on the market. They plug into your car cigarette lighter for power. The better ones will also charge your iPod at the same time. There are a couple of models available (Griffin RoadTrip ($29.99 on special now) pictured, MediaGate iKit for example) that include an integrated iPod holder, making for a very tidy solution. The better ones also allow you to set up to 3 channel presets. This makes it quick to find a free channel for your current location, helping overcome the problem of congested FM channels.
- Low cost
- Easy Setup
- Charges your iPod
- Average audio quality
- All playback control must be done through your iPod
- iPod in plain sight and needs to be removed every time you park your car
4. Connection via AUX-in ($90+)
To connect your iPod is dead easy. You just need a stereo audio cable ($8-$20) that runs between the AUX-in jack on your car stereo and the headphone jack on your iPod. Cables come in different lengths and some have retractable mechanisms. If you’re buying a retractable cable, make sure you get a quality one or the retractor is likely to fail very quickly. If you have a first generation iPhone you will need a mini cable like the one from Belkin pictured, as the iPhone’s headphone jack is slightly recessed (this has been fixed in the iPhone 3G so you can use any stereo cable). This method will give you very good sound quality at very low cost.
Some car stereos have an AUX-in jack but it will be located on the back, hidden out of site. For these models you will need to run a cable to the front.
With entry level car stereos sporting AUX-in jacks starting at around $90, you may be better to completely replace your existing stereo, rather than going for an FM-transmitter or cassette adapter solution. You’ll end up with much better sound quality. Just remember that the new car stereo will need to be fitted. If you’re technically adept, you can do this yourself. There are a number of sites that offer step by step instructions on removing and fitting car stereos for most makes and models of car. Some are free and others charge around $5 for the instructions. To have it professionally installed will usually set you back around $80-$100 depending on your car. Try to negotiate a reduced installation fee when purchasing your stereo.
Your iPod obviously won’t be able to draw any power from the AUX-in jack, so you may want to invest in a car charger if you’re going to be in the car for long periods of time. The Griffin TuneFlex Aux ($49.99) doubles as a charger and holder (very similar to their FM transmitter product but without the transmitter). Note the way the audio cable neatly plugs into the cigarette lighter connector, keeping it out of the way.
- Good quality audio
- Low cost if existing stereo has AUX-in
- All playback control through the iPod
- iPod in plain sight and needs to be removed every time you park your car
5. Connection via CD-changer port (69.98£)
Many stereos have a port on the back that’s used to connect an external CD-changer, located under a seat or in the boot. This is the case for both factory-fitted and after-market models. Xcarlink make an adapter that allows you to connect your iPod through this port. Not only does it provide great audio quality, but you can control your iPod through your stereo and steering wheel controls. You can select tracks, rewind, fast forward and adjust the volume. You can even select playlists using your steering wheel buttons. It does all this without disabling the controls on your iPod.
One of the things I particularly like is that it will automatically pause playback when you switch to another source. Great when you’re in the middle of a podcast and want to switch to the radio to hear the news.
Finally it charges your iPod and provides a pass-through port so you can still use your CD-changer.
The biggest drawback for iPod owners is this unit doesn’t support Apple’s AAC music format. It does support MP3 and WMA music formats but if you already have a huge collection of music in AAC format it’s something to consider.
- Great quality audio
- Playback control via your stereo and steering wheel buttons
- Works with many existing stereos
- iPod can be stored out of sight
- Charges as you go
- Does not support Apple’s AAC music format, only MP3 and WMA.
- Only works with stereo’s that have a CD-changer port
6. Bluetooth-enabled car stereos ($260+)
There are a number of car stereos appearing with built-in bluetooth connectivity. Not only does bluetooth allow your to make and receive hands-free phone calls through your stereo, you can also use it to stream audio from your MP3 player.
With the iPhone’s built-in bluetooth this would seem like an ideal option for iPhone owners. Alas the iPhone doesn’t support A2DP (Advanced Audio Distribution Profile), the protocol that makes streaming audio possible. Frustratingly, Apple hasn’t rectified this limitation in the new iPhone 3G. There is a purported workaround but it’s hardly ideal – it’s a mono signal and the sound is also played through the iPhone’s external speaker at the same time.
You can however bluetooth-enable your iPod (and iPhone) by purchasing a bluetooth adapter ($75) that plugs into the docking port of your iPod from 8bananas.com, a Sydney-based company.
This device works by converting the audio signal from your iPod to a bluetooth wireless stream that your bluetooth-enabled car stereo can receive and play. This approach has a couple of distinct advantages. Firstly it allows you to play Apple’s AAC audio format, including DRM-protected tracks. Secondly as it’s your iPod doing the playback, features such as shuffle, repeat and the ability to remember the current position in a podcast or audiobook are also supported. Sound quality is a lot better than that provided by FM transmitters as bluetooth doesn’t suffer the same interference problems. Expect to get similar audio quality to that provided by an AUX-in solution.
Finally you can also control playback wirelessly using your car stereo controls, thanks to AVRCP (Audio/Video Remote Control Protocol). You can select the next/prev song, pause/resume and start/stop playback.
Bluetooth is a good option if you’re looking for a solution that supports both hands-free phone calls and music playback. You can even use this unit with a set of wireless bluetooth headphones.
- Supports hands-free calling and music playback
- No cables
- Easy setup (if bluetooth enabled stereo already installed)
- Control playback from your car stereo
- Moderately Expensive (if you don’t already have a bluetooth enabled stereo)
- Can’t charge your iPod while travelling as the bluetooth adapter plugs into the iPod docking connector (in fact as the bluetooth adapter is powered from the iPod, the battery will run down quicker)
7. Car stereos with direct iPod control ($278+)
Most car stereo manufacturers now offer models that support direct integration with your iPod using either a standard USB cable or a dedicated iPod cable. They are designed so that all control of your iPod is done using the car stereo controls. They usually have a rotary knob that doubles as a traditional volume control and provides the equivalent of the iPod click wheel. Using the knob you can scroll through your music library by playlist, artist, album, song, etc, just as you would on your iPod. Functions such as repeat, shuffle, fast forward, rewind, pause are also supported.
Direct control units disable your iPod controls while it’s plugged into the car stereo. However Pioneer do provide a Passenger Control Mode so that a passenger can switch control back to the iPod in order to control playback using the iPod itself.
Varying amounts of information about the currently playing track is displayed, depending on the size and sophistication of the stereo’s display. The top of the range model from Alpine (pictured below) will even display album art on it’s full colour LCD display.
Audio quality should be excellent as information is transferred digitally to your car stereo. Pioneer even use a technology they call ‘Advanced Sound Retriever’ which they claim helps restore the high frequencies lost during digital audio compression.
These units will happily play Apple’s AAC encoded music but not DRM-protected AAC. This is the downside of running digital all the way to the head unit itself and just serves to illustrate why DRM is such a bad idea.
Like the AUX-in jack, the iPod connector may be located on the front or back of the unit. USB connectors tend to be on the front and dedicated iPod connectors on the back.
Unlike the AUX-in jack, you’re much better off having the iPod connector located on the back and having the cable running to your glove box. The glove box provides a good place to hold your iPod while travelling and also means it’s safely out of sight. Great if you’re in and out of the car all day. You don’t need to be able to reach your iPod anymore as all control is done through your car stereo. Having the connector on the front means you have an untidy cable sticking out of your stereo and you still need to find a place on the console to store your iPod. The exception to the above is when you have an iPhone. You’re going to want to take this with you whenever you leave your car, so you want it to be easy to plug in and remove.
Popular Brands with Direct iPod Control
- Excellent audio quality
- Great control via your car stereo
- Practical, tidy, out of sight solution (for models with cable running to the glove box)
- Moderately Expensive (if you don’t already have an iPod enabled stereo)
- Will not play DRM-protected AAC tracks
8. Cars with built-in iPod integration ($15,000+, includes car)
Car manufacturers are uniquely placed to offer thoroughly integrated iPod support. They have the power to alter the form and layout of the dash and console to give the driver easy access to playback controls and position large, well placed displays to ensure the driver’s eyes never leave the road. Sadly most have done little if any such design, while still claiming to offer full iPod integration.
Full iPod integration often ends up meaning the new car buyer has the option of purchasing an overpriced ‘integration kit’ so they can connect their iPod to the inferior model car stereo that comes factory-fitted with their new car. This kit provides nothing more than that provided by after-market stereo solutions (see 7 above).
If you’re considering purchasing an integration kit from your car manufacturer, think again. You’re almost certainly better off ripping out your existing unit and purchasing a decent after-market stereo that includes iPod integration as standard. It will be cheaper, you’ll have more choice and end up with a better sound system.
If you are looking to purchase a new car, make sure the dealer includes full iPod integration at no extra cost. It’ll cost them almost nothing and keep in mind that even to you it’s only worth $278 – $350 depending on whether you can install an after-market car stereo yourself.
Some car manufacturers have taken iPod integration seriously. Unfortunately this comes at a price. Still it’s nice to dream. Take a look at this offering from BMW to give you an idea of what can be done (click on the picture to see an interactive flash demo).
Note the dedicated controls on the steering wheel, the rotary wheel below the gearstick and the large, eye-level display clearly showing a list of songs.
- Excellent audio quality
- Great control via your car stereo
- Practical, tidy, solution
- Inflated price if not part of the initial car purchase
- Most manufacturers do the bare minimum. They could be so much better.
As you can see there are many ways to integrate your iPod with your car stereo. The only solutions I don’t recommend are the cassette adapter and FM transmitters.
Stereos with an AUX-in jack are a very cost effective solution and provide good audio quality.
The Xcarlink adapter is worth investigating, especially if you have a factory-fitted stereo you don’t want to throw out. It’s disappointing however that this unit doesn’t support AAC encoded music.
You can’t beat a bluetooth enabled car stereo and the bluetooth adapter from 8bananas.com if you need to make hands-free calls too.
Direct iPod control units give you great sound and control and make for a very tidy solution. Unfortunately they don’t play DRM-protected AAC tracks but hopefully DRM-protected audio is becoming a thing of the past.
Finally, please leave a comment and tell me which solution has or hasn’t worked for you.
During the recent beta for Text2Go 3.0 we ran a competition to see who could submit the most number of corrections. The winner was Brad Isaac, author of the popular goal setting blog Persistence Unlimited. Brad has been sending in a steady stream of corrections since the beta went live. Thanks very much for your contributions. Brad received a set of Sennheiser Headphones for his efforts.
Today I thought I’d take a look at the pronunciation correction dictionaries to see how many new entries have been added since the official launch of Text2Go 3.0.
Here are the statistics.
108 new corrections
4 new text cleanup rules
1180 new words identified as correctly pronounced
Not bad, considering Text2Go 3.0 has only been released for 3 weeks. Thanks once again to all those who have contributed corrections, especially Brad!
Finally! It’s taken a lot longer than I expected. Software estimation proves once again to be an elusive art. The major new feature can be summed up as ‘Pronunciation correction done right’. Ever since I discovered text to speech technology I’ve been bugged by mispronunciations. Although quite rare, they tend to stand out in a document that’s being narrated. They’re especially grating if they occur multiple times in the same document. For this reason, most text to speech applications provide a way to enter corrections. The previous release of Text2Go provided this ability but it required the user to edit XML files and restart Text2Go each time. Not very user-friendly! It was a stop-gap solution until could find the time to implement a proper solution.
That time has come. When I first designed Text2Go I had a lot of ideas on how to efficiently identify and correct mispronunciations. With this release I’ve been able to put these ideas into practice. This has been very satisfying.
One of the first challenges is finding a way of efficiently identifying mispronunciations. Pronunciation errors are actually quite rare. The naive approach is to listen to a document from start to finish, noting down any mispronunciations as you go. You can then come back and enter corrections for the next time the offending words are encountered. There are a couple of major problems with this approach.
The first is that you end up listening to the entire document, complete with mispronunciations. You’ll only get the benefit of the corrections you’ve entered the next time these words occur.
The second problem is the approach is incredibly inefficient. All documents are filled with high frequency words such as ‘a, is, the, and, in’ etc. These are never mispronounced but you have to listen to them over and over.
I wanted an approach that could identify and correct mispronunciations before listening to a document and was quick and efficient. So I came up with the following.
First, extract a list of words from the document and remove all duplicates. This single step means you only have to listen to a word at most once, no matter how many times it appears in the document.
Taking this one step further, once you’ve listened to a word and verified it to be correctly pronounced, it would be nice to be able to remember this so that you never have to check it again. This is particularly useful for eliminating the high frequency words mentioned above. Therefore Text2Go maintains a ‘white-list’ of correctly pronounced words. These are filtered from the document being checked, again significantly reducing the number of words requiring checking.
Of the remaining words, it would be nice to be able to identify the most likely to be mispronounced. The approach I’ve chosen is to spell-check the remaining words. Misspelt (or unrecognized) words are then placed on the top of the list. The reason is that brand names, jargon and slang that haven’t made it into the dictionary are more likely to be mispronounced. Of course correctly spelt words can also be mispronounced and unrecognized words correctly pronounced. It’s just a way of increasing the likelihood of identifying mispronunciations.
Another strategy is to identify compound words (i.e. two words run together) as I’ve discovered these are more likely to be mispronounced. The way I identify compound words is to find all words that are made up of exactly two correctly spelt words. Unfortunately this generates a number of false positives (e.g. ration = rat + ion). It’s still a useful strategy but I could make it more effective if I could find a better way of identifying compound words.
Once you have a list of words you wish to check, Text2Go will speak each word in turn. If you do nothing, the word will be marked as correct. These words can then be added to the ‘white-list’ so they need never be checked again.
If you hear a word that is mispronounced, you can mark it as such with a click of the mouse. Once all words have been spoken, each will be either marked as correct or incorrect. Now all you need to do is enter corrections for each of the mispronounced words. These will then be added to the pronunciation dictionary.
This approach makes it very easy to check just a few words or a large list. You can watch a video of this in action here.
Once you’ve gone to the effort of identifying and correcting the pronunciation of a set of words or even if you’ve just verified a list of words, it would be nice if you could share this information with other Text2Go users. Others will gain the benefits of your corrections and you will gain the benefit of theirs. A win-win situation. This will result in a much larger pronunciation dictionary and in turn lead to more accurate text to speech.
To achieve this I wanted the sharing to require no extra effort on the part of the user. Therefore I’ve created an automatic-update like service that runs every couple of days. It runs completely in the background, requiring no interaction from the user. In fact you can continue to use Text2Go while it runs. First it downloads new pronunciation entries and white-listed words form the Text2Go web server. Then it uploads any corrections and white-listed words you entered locally. These are then merged and made ready for distribution in the next update.
The other major area of functionality I’ve enhanced for this release is Text Cleanup Rules. A Text Cleanup Rule is a power search and replace operation (using regular expressions) that gets applied to a document before it’s converted to text.
One example where Text Cleanup Rules can be useful is in identifying breaks in a document and inserting a pause. For example, a row of ******** or ————- is often used to denote a break in a document. By default these breaks would be pronounced as asterisk, asteriskk, asterisk…. and minus, minus, minus… This very quickly becomes tiresome.
Text2Go includes a rule to identify these breaks and replace them with a pause. A single rule can handle both forms of break and will match two or more *’s or -‘s, with or without spaces in between.
In the previous version of Text2Go you could only create these by editing XML files. For this release I’ve added a built-in editor. The editor allows you to test your rule on a sample block of text as you edit it. Text Cleanup rules are also shared in the same way as pronunciation corrections. You can watch a video of the new editor in action here.
Finally I’ve added a few minor enhancements.
Clipboard Monitor. When you turn on the Clipboard Monitor, Text2Go will automatically add any text copied to the clipboard to the current document. Very convenient when converting text from PDFs, Word documents, email, etc.
Motor-Mouth. Works the same way as the Clipboard Monitor, except that instead of adding text to the current document, it speaks it aloud.
Status Display in the System Tray. In addition to displaying the current Text2Go status on the toolbar in Internet Explorer, it’s also displayed in the icon in the system tray (icon in the bottom right of the screen near the time).
Option to control Whether Text2Go is Started at PC Startup Time. By default Text2Go is started when you boot your PC, but for those who only use Text2Go occasionally, you may prefer not to have it started every time.
This release has been very satisfying to me personally. However I’m afraid that it may have been a little self-indulgent. To ensure this is not the case for the next release, I’m running a 10 Second Poll so you can vote on the next major feature you’d like to see added to Text2Go. Please take the time to vote.
You can download Text2Go 3.0 here.
The other day I needed to splice some voice samples together for my post on RealSpeak Voice Pronunciation. I was using the free audio editing tool Audacity and happened to notice something disturbing about the waveform that had been generated. I was using the RealSpeak Samantha voice and it was quite clear that a certain amount of audio clipping had occurred.
You can see this in the regions I’ve highlighted in red, where the natural shape of the waveform looks to be cutoff or clipped.
If we zoom right in so the individual waves are visible, you can clearly see that each peak has been chopped off.
Does this matter?
Yes. I’m no audio expert but we’re actually throwing away part of the signal and this will produce some audio distortion.
Can it be fixed?
Yes. The fix is as simple as adjusting the volume of the voice (don’t confuse this with the volume on your PC). You can adjust the volume of an individual voice using the Text2Go Options page. By default, the volume of all voices is set to Normal. By lowering this a couple of notches, the output for Samantha will no longer be clipped.
Converting the same text to speech produced the following waveform.
You can see that the waveform is no longer clipped at the top or the bottom.
Similarly, when we zoom in, each peak is nicely rounded and no longer chopped off.
Do other RealSpeak Voices suffer the same problem?
Serena and Tom also suffer some clipping, so if you use these voices make sure you adjust the volume setting down one or two notches. The other RealSpeak voices are not clipped at the Normal volume setting and don’t need to be adjusted.
During the course of adding a pronunciation editor to Text2Go, I’ve discovered some of the strengths and weaknesses of the RealSpeak voices when it comes to pronunciation. Pronunciation errors are quite rare, making it hard to build up a large collection of mispronounced words. Text2Go’s new pronunciation editor makes this very easy.
Now that I’ve identified an extensive list of mispronounced words, it’s possible to spot some trends and discover which voice is the most accurate.
Firstly, I’ve found that compound words can cause problems (e.g. afterword, longterm, screenshot ). Most common compound words are fine but often brand names that are made up of two words run together can be mispronounced. It’s very easy to correct these mispronunciations – you just separate the two words with a hypen or space (e.g. after-word, long term, screen-shot ). This occurs often enough that I’ve added a way to identify compound words in the pronunciation editor. I’ve found that Samantha is significantly better at pronouncing compound words that all the other RealSpeak voices.
A similar problem occurs with words having the prefix re-. For example reprogram, repurposed, rereleased . In these cases the re- is not identified as the re- prefix. Again the solution is simple, just add a hypen after the re (e.g. re-program, re-purposed, re-released ). Once again, Samantha does a better job of pronouncing re- prefixed words.
In order to hear the differences for yourself, I’ve chosen 10 mispronounced words and 4 voices. The table below contains each voice’s attempt to speak the word without any correction applied. Note – I’ve used a dash to indicate a passable but not perfect pronunciation.
The Uncorrected row contains the voice’s uncorrected pronunciation attempt and the Corrected row contains the pronunciation after corrections have been applied. Notice once corrections have been applied, all voices pronounce all words correctly.
One set of results that surprised me were those for Tom. When I started writing up this post I was sure that Samantha was way ahead of the other voices. However this result shows that Tom is also a worthy contender. I’m still sure that Samantha has the most accurate pronunciation but the margin is not as great as I imagined.
My hunch is that Samantha is based on slightly newer technology and it’s the reason why the Samantha voice file is around 110MB in size whereas the others are around 70-90MB.
So does this mean that Samantha is the best voice and the one I should always use? What about regional differences?
Do voices from different regions pronounce words differently? Most definitely! Take the Australian voices Karen and Lee as examples. Not only do they have Australian accents, they correctly pronounce local Australian place names, whereas the other English voices can be way off. Listen to the following Australian place names (of aboriginal origin) spoken first by Samantha (US English) and then Karen (Australian English)
Pronunciation is only one criteria on which to choose a voice. I believe it’s more important to choose a voice you enjoy listening to. If you like the sound of Samantha then definitely choose her but if you prefer the sound of one of the other voices, go with them. Remember that pronunciation errors in normal day to day text are quite rare for any of the RealSpeak voices.