Simple experiments on android speech api
futhrevo / speechtrials Goto Github PK
View Code? Open in Web Editor NEWSimple experiments on android speech api
Simple experiments on android speech api
Let us use Firebase for Login and Authentication, and User Profiles.
https://firebase.google.com/docs/auth/android/google-signin.
The app should monitor the temperature profile (reading the temperature sensor data from BLE profiles) periodically and announce to the user if the desired cooling or desired temperature setting cannot be achieved based on the rate of temperature change. For example, if the desired temperature is 20 degrees and the minimum temperature measured in the helmet gets static at 27 degrees, then the App should announce that "we cannot cool below 27 degrees. We are trying our best to maintain your desired comfort level".
The Home Screen should be designed similar to a Bike Dashboard and display stats/indicators like:
It should also have BUTTON's for quick and easy access to:
Contextual Buttons/Actions:
When the App starts up do the following checks:
TBD: We need to discuss on the best strategy to implement 3, 4 and 5. For now listing them as a placeholder. Let me know your thoughts on how we should do this.
App should monitor the external temperature and set the Fan speed to a setting that will result in the desired level of cooling.
App should monitor the rider motion state (still, moving slow, moving fast) to set the fan speed. For example Fan speed should be set to the Highest level when the rider is still for more than one minute or moving at slow speed (say < 5 km/hr) and set to Lowest level when the rider is moving fast (say > 40 km/hr) for more than two minutes.
The Speed Thresholds above should be configurable in app settings.
When in Drive Mode the App should auto answer any incoming phone call from favorite contacts after announcing the caller name. If not in Drive mode this feature should be de-activated.
While the App is in Drive Mode and "Read Message" Option is turned on, parse the message to check if it contains any location name / a google map link? If a location is found, ask user "Received Location from . Do you want to navigate there?"
If the user answers in the affirmative using an utterance like "Yes|Sure|Certainly|Please do|Of Course|Yes thanks|Yes Please|..." then say "Ok. Routing you to [destination name]".
Then automatically open google maps for that locations and start navigation with turn by turn directions.
If the user answers in the negative then ignore the message.
If the user doesn't say anything or the app doesn't get what the user said please ask the user again like "Say Go or Go Now to navigate to [destination name]"
If the user says "Navigate" then Open Google Maps and start navigation to the destination.
If the user says anything other than "GO or GO NOW" then quit the voice dialog.
User should be able to create a list of Favorite Contacts in their preferences.
User should be able to choose an option to auto answer incoming call from their Favorite Contacts.
User should be able to choose an option to auto-reject any other incoming calls.
User should be able to send a text message when auto-rejecting an incoming call. The text message should be configurable with the default set to "Sorry am unable to talk right now. Will call you later."
When Incoming SMS Action is set to NO Action it should not Read SMS. Looks like this is not implemented currently. Please CHECK @futhrevo
For Battery Level Indicator:
App should read the battery level from a BLE profile and alert the rider if the level is lower than a threshold value.
For Water Level Indicator:
App should derive a proxy for water level based on temperature gradient wrt time (dT/dt). The threshold for flagging empty tank can be configurable in app preferences with following settings (1C/min, 2C/min, 3C/min and 5C/min). The App should compute this gradient every minute and the moment it crosses the configured threshold value announce that "the water may be too low. Please refill water for continued cooling".
Let us use Firebase Remote Config https://firebase.google.com/docs/remote-config/use-config-android to store such config values. It will make it easy for us to publish changes to these values without a release cycle for the App.
The app should open (come to Foreground) automatically based on the following triggers:
When the Device connects with a BT hands-free headset.
When the device detects motion via the built-in accelerometer.
When the user starts navigation on Google Map.
etc.
We need to enable a small conversational dialog for Listening and Replying to Text Messages.
When a new SMS is received the App should say "New Message from . To listen to this message say Listen." and prompt for a Voice Input
If the user says "Listen|Please|Read|Yes|Go Ahead|Listen Now" etc. then the App should Read the Message body, and on finishing ask "If you would like to Reply to this message say Reply"
If the user says Reply the App should prompt for a Voice Input and wait for the user to dictate the message.
On completion, the App should repeat the message that the user has input and ask "Do you want to Send it or Change it?"
If the user says "Send it" send the message
If the user says "Change it" go to step 3 above.
At each step when the user gets a voice prompt and doesn't respond within 15 - 20 seconds the App should prompt the user "Could you please repeat what you just said". If the user doesn't respond or the App doesn't speak any voice input or the app doesn't understand what the user said it should abort with a voice message like "Sorry I'm having trouble listening to what you are saying. Please try again in some time".
NOTE: This feature should be activated in Drive Mode only.
One small change request to make the language more explicit, can we rename the options under "Incoming call action" to the following:
Currently ". . ." is being used to pad a message, but it reads as "dot dot dot".
It should be replaced with some media sound like a Notification Sound or something like that. The media can be played before and after the message.
Collect the following stats for every ride:
Cache Last 10 Ride stats on the device. All ride stats should be archived to the cloud (Google Cloud Storage)
User should be able to invoke our App using "Ok Google Open Rider". When the App opens it should present a voice prompt just like the Google Assistant.
There should be a preference setting to set:
Track My Ride (On/Off)'
When Track My Ride is On The app should track the location coordinates (every 4 seconds). The app should buffer these location coordinates for a set time interval like one minute and sync to the cloud (use firebase or google cloud storage)
On the Galaxy S7 , speaking a command worked most of the time. Sometimes the app failed to catch a name. The app also sometimes failed to respond when the microphone icon was clicked.
When in Drive Mode the App should auto-reject any incoming phone calls from any contacts other than the Favorite contacts marked in App preferences.
Optionally, depending on the user's preferred settings, the app should send an automated text response like "Sorry am unable to receive your call right now. Will call you back later." This message should be customizable in App preference settings.
When not in Drive mode this feature should be deactivated.
List of Events to track:
When the App is activated a notification should pop up on the notifications panel. When the user clicks on the notification App should be stopped / de-activated.
While the App is in Drive Mode a background service should continuously monitor the state of the Bluetooth Classic and LE connections every 5 s / 10 s (should be configurable).
If any of these connections gets dropped the app should try to re-establish the connection promptly in the background.
When the connection is dropped the app should speak "Disconnected."
When the connection is back (re-established) the app should speak "Connected."
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.