Friday, March 25, 2011

Innovation Is Our Future

I have made a presentation in HP about Innovation Is Our Future in Egypt, it was a generic presentation about the innovation , here is the summary of this presentation:



To download the full presentation click Here.

As Thomas Edison said “Innovation is the ability to see change as an opportunity - not a threat.”
Innovation comes from the Latin innovationem, noun of action from innovare means "to renew or change" therefore be seen as the process that renews something that exists and not, as is commonly assumed, the introduction of something new.

1) Innovation versus Invention:
-Patents are granted for inventions, not innovations.
-Customers buy innovative products, not inventive products.

Definition:
• Innovation is a process of taking new ideas to satisfied customers.
• Innovation is the profitable implementation of ideas.
• Innovation is about selling not just inventing.

Types:

Disruptive Innovation (Radical Innovation):

• A new product or feature that delivers a very large transformative value is often described as a disruptive innovation.
• The best way to view disruptive innovations is to consider them market makers and market changers


Incremental Innovation (Continuous Innovation):

• Inventions that do not cause a major shift in an existing market or create a new market.
• Have a much smaller transformative impact by adding features to an existing product or process that were originated by a previous disruptive innovation.
• Can improve competitive positioning for the company.

Comparison between both types:

• Incremental innovation:
–Generally costs less and is easier to achieve.
–But it rarely leads to a position of market leadership.
–Example: Mobile Features (memory size, communication , radio …etc).
• Disruptive innovation:
–Takes longer, costs more, and has a much higher failure rate.
–But when successful, the payoff is huge.
–Example: Internet, GPS, IPad, IPod, Mobile , CD , Blu-Ray, …etc..
–If we mix both ==> Innovation doesn’t happen.



Negative Incremental Invention:
• Add functionality or features to the product beyond customer acceptance levels.
• Famous example:
–Increase memory size in Mobiles --> Slow down performance.
–Add more feature to a device --> Decrease battery lifetime.

Destructive Invention:
• Continue to create new incremental inventions increases the risk of generating destructive inventions.
• A destructive invention is one that increases complexity rather than reducing it or that alienates existing customers in some way.

Example: Microsoft Vista : Microsoft recognized this and rushed Windows 7 to market in an attempt to stabilize its market image and positioning.

2) Your Way to Innovate:

As Clayton Christensen said “Innovation simply isn't as unpredictable as
many people think. There isn't a cookbook yet, but we're getting there.”

Thinking Outside the Box
• What is the box?
–The current experience and knowledge of the group responsible for new product innovation.
• Why do you need to think outside the box?
–By expanding the scope of the innovator's viewpoints or knowledge, the team will be able to identify an increased number of positive innovations.
• How do you think outside the box?
–No magic prescription.

How to Innovate?
2 main cornerstones:
**Knowledge is the base.
– Identify box and its boundaries.
– Current/Similar solutions (pros and cons)
**Kill Assumptions
– To isolate assumptions and remove them as roadblocks to innovation

Personal Aspects:
• Intelligence is a necessary but not sufficient.
• The most common personality trait associated with innovation is openness to experience.
• Personal initiative, proactivity and social competence.
• Motivation is one of the most important predictors of innovative working.
• Domain-specific knowledge is a key human resource for innovation in organizations.
• The association between mood and innovation is complex and requires further investigation.
• Leaders and managers play a key role in motivating innovative working.

Innovator’s DNA:
• Associating- ability to put together ideas and information in unique combination that nobody else put before.
• Observing- innovative people observe actively, like an anthropologist, they scrutinize common phenomena.
• Questioning- they ask provocative and challenging questions of the world around them.
–They ask “why”, “what if”, “why not”.
• Experimenting- they expose themselves to new ideas, for them anything can be experimented upon.
• Networking- they meet diverse people with different perspectives and ideas.

Each of the above items need a plan to work on it to enhance it.
A) Improve your questioning skills
• Identify a problem and then write nothing but questions about it for 10 minutes a day for 30 days.
• Over that period of time the questions will change along with understanding of the problem.
• Then you can compare the questions from the first day with these from the last and you can easily notice the thinking pattern change.

B) Enhance observation skills
• Choosing a business, customer, supplier, or client.
– Spending a few days scrutinizing how they work so we can better understand the issues they have to deal with.
• Try to describe your way on your daily way to work and try to identify small differences.
• Make eye contact with everyone , Observe people's body language, Maintain a panoramic view of your surroundings, human and natural/material.

C) Networking with various people
• Build a diverse network of contacts.
• Not merely knowing a lot of people, but knowing people from diverse backgrounds, who work in different industries, have different skills, and deal with different issues, and all this ensures that we are exposed to varied ideas.
• Setting aside 30 minutes a week to talk with a person you wouldn’t normally talk to.

D) Maximize your comfort zone
• You must push yourself out of your comfort zone.
• You can expose yourself to a variety of different stimuli:
–Attending conferences and workshops outside of the normal areas of expertise.
–Working with people from other departments.
–Networking with people from the same line of business but outside their workplace.
–Brainstorming sessions.
–etc..

Advices:
• In the middle of difficulty lies opportunity.
• Aim high (disruptive rather than incremental).
• You must have a space to dream.
• Don’t take any thing for grant.
• Play – exploring and prototyping.
• Be a people watcher (ask, watch, learn and try)
• Sometimes innovative solution is a combination of two existing solutions!
• Valuing partnership more than individual achievement (i.e. Team work).
• Think one customer at a time (i.e. focus).
– Example: medical solution that fit for doctors, patients and nurses!

Target Innovation:

There are 3 steps:
1) Find a hot market with lots of buyers.
• Mobile Market.
2) Identify the limitation of existing products in the market.
• 3D calls, non-chargeable battery, block-list ,…etc.
3) Think of an innovative solution to overcome that limitation.
• Air breath batteries, ..etc.

Innovation Self-Plan

• Spend sometime for thinking (every day!)
• Note down ideas (in notebook , mobile notepad or text file
even)
• Evaluate Ideas (transformation & business value)
• Spend sometime mastering the idea domain.
• Check if this is new idea (state of the art)
• Plan Activities
• Collect a team and do POC (Prove of Concept)
• Evaluate Outcome and repeat the cycle.

Global Innovation Index
• A global index measuring the level of innovation of a country, produced jointly by The Boston Consulting Group (BCG), the National Association of Manufacturers (NAM), and The Manufacturing Institute (MI), the NAM's nonpartisan research affiliate.
• Looked at both:
– The business outcomes of innovation
– Government's ability to encourage and support innovation through public policy.
• Latest index was published in March 2009.
Egypt was in the place no#65.

Our big Advantage
“Arabic” advantage more than 300 millions of population. a lot of high-income countries esp. in the Gulf area.
Most of big companies invest in the Arabic market.
Simplest Innovation is to make successful product speaks or deal with Arabic.


Our Mission
• There is a major lack of innovative products in Egypt and Arabic Region.
• Being late, we need more work and more innovation than others.
• We have a lot of unutilized skilled resources covering all areas of technologies and we need to motivate them.
• It should be part of our new revolution.

3) References
• Book: Innovate the Future by David Croslin, 2010
• UNESCO SCIENCE REPORT 2010
• http://www.slideshare.net/imootee/10-lessons-ofinnovation-idris-mootee-keynote
• http://www.slideshare.net/ericw01/seeds-ofinnovation
• http://www.nesta.org.uk/library/documents/Every-day-innovation-report.pdf
• http://createtomorrowtoday.com/downloads/Ten_Steps_to_Innovation_article.pdf
• http://en.wikipedia.org/wiki/Global_Innovation_Index
• http://blog.goyello.com/
• http://www.bcn.es/movies/innova/bcn_innova/index_en.htm
• http://hbr.org/2009/12/the-innovators-dna/ar/1
• http://www.ificlaims.com/news/top-patents.html
• http://www.wipo.int/pressroom/en/articles/2011/article_0004.html
• http://www.slideshare.net/abreja/innovationmanagement-to-share
• http://www.slideshare.net/betseymerkel/innovation-1526526

Friday, March 4, 2011

Speech Recognition By Java - Simplified



Speech recognition is one of the challenging areas in computer science, a lot of pattern recognition methodology tried to resolve a good way and higher percentage of recognition.

One of the best ways to be use is Hidden Markov Model :



"The process of speech recognition is to find the best possible sequence of words (or units) that will fit the given input speech. It is a search problem, and in the case of HMM-based recognizers, a graph search problem. The graph represents all possible sequences of phonemes in the entire language of the task under consideration. The graph is typically composed of the HMMs of sound units concatenated in a guided manner, as specified by the grammar of the task."

There are a lot of Java Based Speech Recognition Engines, you can find them here:

http://ocvolume.sourceforge.net/links.php.

In this post we will select one of the famous open source Java speech recognition software and identify simple steps to use it.

Sphinx-4

Sphinx-4 is a state-of-the-art speech recognition system written entirely in the JavaTM programming language. It was created via a joint collaboration between the Sphinx group at Carnegie Mellon University, Sun Microsystems Laboratories, Mitsubishi Electric Research Labs (MERL), and Hewlett Packard (HP), with contributions from the University of California at Santa Cruz (UCSC) and the Massachusetts Institute of Technology (MIT).

Sphinx-4 started out as a port of Sphinx-3 to the Java programming language, but evolved into a recognizer designed to be much more flexible than Sphinx-3, thus becoming an excellent platform for speech research.


1) Download the software:

Here is the download link:

http://sourceforge.net/projects/cmusphinx/files/sphinx4/1.0%20beta6/sphinx4-1.0beta6-bin.zip/download.

2) Create new Java project:

Add to class-path 3 jars from the lib folder:
jsapi.jar (if not exist jsapi.exe will extract it on windows or jsapi.sh will extract it)
sphinx4.jar (APIs Jar)
WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar (this is the jar containing the speech)


3) Create a new class to write the logic on it: e.g. ListenToMe.java
Let the package name osa.ora

4) Add the file dict.gram to the same package: osa.ora
It should looks like:
#JSGF V1.0;
grammar hello;
public <greet>= (Good morning | Hello | Hi | Welcome) ( Osama | Paul | Philip | Rita | Will );

The structure is to write the alternative words between () and separated by | and give them tag name to describe these words (greet here).

The grammar specs in this URL:
http://www.w3.org/TR/jsgf/
A quick tutorial in this URL:
http://puneetk.com/basics-of-java-speech-grammar-format-jsgf


5) Add the config file myconfig.xml to the same package: osa.ora
You can get the file structure from the jar in bin folder HelloWorld.jar
in the location "HelloWorld.jar\edu\cmu\sphinx\demo\helloworld\helloworld.config.xml"

You need to edit the following entry:
<component name="jsgfGrammar" type="edu.cmu.sphinx.jsgf.JSGFGrammar">
<property name="dictionary" value="dictionary"/>
<property name="grammarLocation"
value="resource:/osa/ora/"/>
<property name="grammarName" value="dict"/>
<property name="logMath" value="logMath"/>
</component>

6) Write the following code in the created class:

import edu.cmu.sphinx.frontend.util.Microphone;
import edu.cmu.sphinx.recognizer.Recognizer;
import edu.cmu.sphinx.result.Result;
import edu.cmu.sphinx.util.props.ConfigurationManager;

public static void main(String args[]){
ConfigurationManager cm = new ConfigurationManager(ListenToMe.class.getResource("myconfig.xml"));
Recognizer recognizer = (Recognizer)cm.lookup("recognizer");
recognizer.allocate();
Microphone microphone = (Microphone)cm.lookup("microphone");
if(!microphone.startRecording()){
System.out.println("Cannot start microphone.");
recognizer.deallocate();
System.exit(1);
}
System.out.println("Say: (Good morning | Hello | Hi | Welcome) ( Osama | Paul | Philip | Rita | Will )");
do {
System.out.println("Start speaking. Press Ctrl-C to quit.\n");
Result result = recognizer.recognize();
if(result != null) {
String resultText = result.getBestFinalResultNoFiller();
System.out.println((new StringBuilder()).append("You said: ").append(resultText).append('\n').toString());
} else {
System.out.println("I can't hear what you said.\n");
}
} while(true);
}


As you can see you can use ConfigurationManager to re-set the grammarName to dict1 , dict2 ,..etc, you can also have multiple configurations.

For more details about the usage you can refer to this URL:

http://cmusphinx.sourceforge.net/sphinx4/

You may use Interactive4J implementation direct to achieve dynamic voice recognition.. Find more details here.

Tuesday, March 1, 2011

Text To Speech by Java - Simplified

Sun released a standard cross platform Speech APIs for Text to Speech and Speech recognition.
With the Java Speech API you can incorporate speech technology into user interfaces for your applets and applications based on Java technology. This API specifies a cross-platform interface to support command and control recognizers, dictation systems and speech synthesizers.
Cross-Industry Development
The Java Speech API was developed by Sun Microsystems, Inc. in collaboration with leading speech technology companies: Apple Computer, Inc., AT&T, Dragon Systems, Inc., IBM Corporation, Novell, Inc., Philips Speech Processing, and Texas Instruments Incorporated. Sun works with third-party speech companies to encourage the availability of multiple implementations.

One of these implementations is FreeTTS.



In this post we will go through few steps and simplest way to use the text to speech functionality..

1. Download FreeTTS library:


Download version 1.2


2. Create new Java project:

Add to the class path of this project the following jars : freetts.jar & jsapi.jar

3. Create a new class:

Add the following logic:


1) Declare instance variable:

Voice speechVoice = null;


2) Initialize the voice manager :

VoiceManager voiceManager = VoiceManager.getInstance();
speechVoice = voiceManager.getVoice("kevin16");
speechVoice.allocate();

3) User the voice :

speechVoice.speak("Osama Oransa Java Architect from Egypt");
speechVoice.speak("Judy where are you?");

4) Deallocate it when you don't want it or want to exist from the program:

speechVoice.deallocate();


5) There are 3 possible values for the voice:

Alan , kevin and kevin16

* a low quality, unlimited domain, 8kHz diphone voice, called kevin
* a medium quality, unlimited domain, 16kHz diphone voice, called kevin16
* a high quality, limited domain, 16kHz cluster unit voice, called alan

To list all available voices:
Voice voices[] = voiceManager.getVoices();
for(int i = 0; i < voices.length; i++){
System.out.println(" " + voices[i].getName() + " (" + voices[i].getDomain() + " domain)");
}

** To control voice properties:
Like volume , pitch ,...etc.. call corresponding methods on Voice instance:

speechVoice.setVolume(2);
speechVoice.setPitch(100);
speechVoice.setRate(20) ;

The initial values for those parameters are 1.0 (volume at its loudest level), 100.0 (frequency of the voice) 150.0 (rate of words per minute).

This is the simplest way to use this APIs but there is another way you can check at the documentation to create Synthesizer

If you don't care about the voice characteristics:

Synthesizer synth = Central.createSynthesizer(null);

If you do care initialize it as:

SynthesizerModeDesc required = new SynthesizerModeDesc ();
required.setLocale (new Locale ("es", null));
required.addVoice (new Voice (null,GENDER_FEMALE,AGE_DONT_CARE,null));
Synthesizer synth = Central.createSynthesizer(required);

synth.allocate ();
synth.resume (); // to wait text to speech


To use it:
synth.speakPlainText(text.getText (), null);
try{
// Block this thread until
// the synthesizer's queue
// is empty.
synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
}catch (InterruptedException e2){
}

To deallocate it:
synth.deallocate();

These need you to do the following as well:

-Copy speech.properties to Java Home %java.home%\lib

-Add voices.txt to classpath and put in mind that 1st line of voice will be used

*voices are stored in .jar files:

- cmu_time_awb.jar stores the Alan voice directory for clock-specific speech.
- cmu_us_kal.jar stores the Kevin voice directory for generic speech.