Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
🗣 An overlay that gets your user’s voice permission and input as text in a customizable UI
| Date | Stars |
|---|---|
| 2026-07-24 | 264 |
| 2026-07-25 | 264 |
| 2026-07-28 | 264 |
| 2026-07-30 | 264 |
| 2026-08-06 | 264 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day

<p align="center">
<img src="https://img.shields.io/badge/platform-Android-blue.svg?style=flat" alt="Platform Android" />
<a href="./LICENSE"><img src="http://img.shields.io/badge/license-MIT-blue.svg?style=flat" alt="License: MIT" /></a>
<img src="https://img.shields.io/badge/Android%20Arsenal-Voice%20Overlay-green.svg?style=flat" alt="Android Arsenal" />
</p>
# Overview
**Voice overlay** helps you turn your user's **voice** into **text**, providing a **polished UX** while handling for you the **necessary permission**.
<p float="left">
<img src="./docs/permission.jpg" width="200" />
<img src="./docs/listen.gif" width="200" />
<img src="./docs/speak.gif" width="200" />
<img src="./docs/nopermission.jpg" width="200" />
</p>
# Demo
You can clone this repo, then run the Demo project by doing `./gradlew app:installDebug` and launching the application:
<img src="./docs/demo.gif" width="250">
# Installation
The Voice overlay is available as a gradle dependency via [JCenter](https://bintray.com/bintray/jcenter). To install
it, add the following line to your app's `build.gradle`:
```groovy
dependencies {
// [...]
implementation 'com.algolia.instantsearch:voice:1.0.0-beta02'
// [...]
}
```
# Usage
## Basic usage
1. In your Activity, check if you have the permission and show the appropriate `Dialog`:
```kotlin
if (!isRecordAudioPermissionGranted()) {
VoicePermissionDialogFragment().show(supportFragmentManager, "DIALOG_PERMISSION")
} else {
VoiceInputDialogFragment().show(supportFragmentManager, "DIALOG_INPUT")
}
```
_See [it implemented in the demo app](app/src/main/kotlin/com/algolia/instantsearch/voice/demo/MainActivity.kt#L26-L30)._
This will display the permission dialog if the `RECORD_AUDIO` permission was not yet granted, then the voice input dialog once the permission is granted.
Once the user speaks, you will get their input back by implementing `VoiceSpeechRecognizer.ResultsListener`:
```kotlin
override fun onResults(possibleTexts: Array<out String>) {
// Do something with the results, for example:
resultView.text = possibleTexts.firstOrNull()?.capitalize()
}
```
_See [it implemented in the demo app](app/src/main/kotlin/com/algolia/instantsearch/voice/demo/MainActivity.kt#L41-L43)._
## When the permission is not granted
If the user didn't accept the permission, you [should explain](https://developer.android.com/training/permissions/requesting#explain) the permission's rationale. If they deny the permission, you need to guide them into manually enabling it if they want to use the voice-input feature.
Voice overlay makes it easy to handle all these cases:
```groovy
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (Voice.isRecordPermissionWithResults(requestCode, grantResults)) {
when {
Voice.isPermissionGranted(grantResults) -> showVoiceDialog()
shouldExplainPermission() -> showPermissionRationale(getPermissionView())
else -> Voice.showPermissionManualInstructions(getPermissionView())
}
}
// [...] eventual handling of other permissions requested by your app
}
```
_See [it implemented in the demo app](app/src/main/kotlin/com/algolia/instantsearch/voice/demo/MainActivity.kt#L42-L51)._
This will display the permission rationale when the user doesn't allow it, and the manual instructions in case they denied it.
## Customization
You can customize your voice overlay in the following ways:
### Behavior
Several options let you adapt the voice overlay\'s behavior to your needs.
#### Suggestions
You can provide suggestions of what the user could say, to give them some examples.
```kotlin
voiceInputDialogFragment.setSuggestions(
"64GB Smartphone",
"Red running shoes",
"CExcerpt of 7,581 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:13ab148cfc67ba69, topic:speech-recognition, topic:stt, topic:speech-to-text