All Projects â†’ algolia â†’ Voice Overlay Ios

algolia / Voice Overlay Ios

Licence: mit
🗣 An overlay that gets your user’s voice permission and input as text in a customizable UI

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Voice Overlay Ios

Voice Overlay Android
🗣 An overlay that gets your user’s voice permission and input as text in a customizable UI
Stars: ✭ 189 (-57.05%)
Mutual labels:  chatbots, conversation, search, speech-recognition, speech-to-text, voice-recognition, voice, permissions, conversational-ui, input, overlay
picovoice
The end-to-end platform for building voice products at scale
Stars: ✭ 316 (-28.18%)
Mutual labels:  voice, voice-recognition, speech-recognition
opensource-voice-tools
A repo listing known open source voice tools, ordered by where they sit in the voice stack
Stars: ✭ 21 (-95.23%)
Mutual labels:  voice, conversational-ui, speech-recognition
React Mic
Record audio from a user's microphone and display a cool visualization.
Stars: ✭ 323 (-26.59%)
Mutual labels:  speech-to-text, voice-recognition, voice
Rhino
On-device speech-to-intent engine powered by deep learning
Stars: ✭ 406 (-7.73%)
Mutual labels:  speech-recognition, speech-to-text, voice-recognition
leopard
On-device speech-to-text engine powered by deep learning
Stars: ✭ 354 (-19.55%)
Mutual labels:  voice-recognition, speech-recognition, speech-to-text
KeenASR-Android-PoC
A proof-of-concept app using KeenASR SDK on Android. WE ARE HIRING: https://keenresearch.com/careers.html
Stars: ✭ 21 (-95.23%)
Mutual labels:  voice-recognition, speech-recognition, speech-to-text
Vosk
VOSK Speech Recognition Toolkit
Stars: ✭ 182 (-58.64%)
Mutual labels:  speech-recognition, speech-to-text, voice-recognition
open-speech-corpora
💎 A list of accessible speech corpora for ASR, TTS, and other Speech Technologies
Stars: ✭ 841 (+91.14%)
Mutual labels:  voice-recognition, speech-recognition, speech-to-text
spokestack-ios
Spokestack: give your iOS app a voice interface!
Stars: ✭ 27 (-93.86%)
Mutual labels:  voice-recognition, speech-recognition, speech-to-text
Cheetah
On-device streaming speech-to-text engine powered by deep learning
Stars: ✭ 383 (-12.95%)
Mutual labels:  speech-recognition, speech-to-text, voice-recognition
anycontrol
Voice control for your websites and applications
Stars: ✭ 53 (-87.95%)
Mutual labels:  voice, speech-recognition, speech-to-text
spokestack-android
Extensible Android mobile voice framework: wakeword, ASR, NLU, and TTS. Easily add voice to any Android app!
Stars: ✭ 52 (-88.18%)
Mutual labels:  voice, voice-recognition, speech-recognition
react-native-spokestack
Spokestack: give your React Native app a voice interface!
Stars: ✭ 53 (-87.95%)
Mutual labels:  voice-recognition, speech-recognition, speech-to-text
Botpress
🤖 Dev tools to reliably understand text and automate conversations. Built-in NLU. Connect & deploy on any messaging channel (Slack, MS Teams, website, Telegram, etc).
Stars: ✭ 9,486 (+2055.91%)
Mutual labels:  chatbots, conversation, conversational-ui
octopus
On-device speech-to-index engine powered by deep learning.
Stars: ✭ 30 (-93.18%)
Mutual labels:  voice-recognition, speech-recognition, speech-to-text
Zzz Retired openstt
RETIRED - OpenSTT is now retired. If you would like more information on Mycroft AI's open source STT projects, please visit:
Stars: ✭ 146 (-66.82%)
Mutual labels:  speech-recognition, speech-to-text, voice
Naomi
The Naomi Project is an open source, technology agnostic platform for developing always-on, voice-controlled applications!
Stars: ✭ 171 (-61.14%)
Mutual labels:  speech-recognition, speech-to-text, voice
AmazonSpeechTranslator
End-to-end Solution for Speech Recognition, Text Translation, and Text-to-Speech for iOS using Amazon Translate and Amazon Polly as AWS Machine Learning managed services.
Stars: ✭ 50 (-88.64%)
Mutual labels:  voice-recognition, speech-recognition, speech-to-text
voce-browser
Voice Controlled Chromium Web Browser
Stars: ✭ 34 (-92.27%)
Mutual labels:  voice-recognition, speech-recognition, speech-to-text

Voice Overlay for iOS

Platform iOS Swift 4 compatible Carthage compatible CocoaPods compatible License: MIT

Overview

Voice overlay helps you turn your user's voice into text, providing a polished UX while handling for you the necessary permissions.

It uses internally the native SFSpeechRecognizer in order to perform the speech to text conversion.

       

Demo

You can clone and run the Demo project by doing pod install and then running the project

Installation

Swift Package Manager

The Swift Package Manager is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.

To use SwiftPM, you should use Xcode 11+ to open your project. Click File -> Swift Packages -> Add Package Dependency, enter InstantSearch VoiceOverlay repo's URL.

If you're a framework author and use VoiceOverlay as a dependency, update your Package.swift file:

let package = Package(
    // 1.1.0 ..< 2.0.0
    dependencies: [
        .package(url: "https://github.com/algolia/voice-overlay-ios", from: "1.1.0")
    ],
    // ...
)

CocoaPods

InstantSearchVoiceOverlay is available through CocoaPods. To install it, add the following line to your Podfile:

pod 'InstantSearchVoiceOverlay', '~> 1.1.0'

Carthage

Carthage is a simple, decentralized dependency manager for Cocoa.

To install InstantSearchVoiceOverlay, add the following line to your Cartfile:

github "algolia/voice-overlay-ios" ~> 1.1.0

Usage

  1. In Info.plist, add these 2 string properties along with the description
  • Privacy - Microphone Usage Description with a description like: Need the mic for audio to text
  • Privacy - Speech Recognition Usage Description some description like: Need the speech recognition capabilities for searching tags
  1. Start the Voice Overlay and listen to the text output:
import InstantSearchVoiceOverlay

class ViewController: UIViewController {
    
    let voiceOverlayController = VoiceOverlayController()
    
    @objc func voiceButtonTapped() {
        
        voiceOverlayController.start(on: self, textHandler: { (text, final) in
            print("voice output: \(String(describing: text))")
            print("voice output: is it final? \(String(describing: final))")
        }, errorHandler: { (error) in
            print("voice output: error \(String(describing: error))")
        })
    }

Customization

You can customize your voice overlay by modifying the settings property of the voiceOverlayController:

/// Specifies whether the overlay directly starts recording (true), 
/// or if it requires the user to click the mic (false). Defaults to true.
voiceOverlayController.settings.autoStart = true

/// Specifies whether the overlay stops recording after the user stops talking for `autoStopTimeout`
/// seconds (true), or if it requires the user to click the mic (false). Defaults to true.
voiceOverlayController.settings.autoStop = true

/// When autoStop is set to true, autoStopTimeout determines the amount of
/// silence time of the user that causes the recording to stop. Defaults to 2.
voiceOverlayController.settings.autoStopTimeout = 2

/// The layout and style of all screens of the voice overlay.
voiceOverlayController.settings.layout.<someScreen>.<someConstant>

// Use XCode autocomplete to see all possible screens and constants that are customisable.
// Examples:

/// The voice suggestions that appear in bullet points
voiceOverlayController.settings.layout.inputScreen.subtitleBulletList = ["Suggestion1", "Sug2"]
/// Change the title of the input screen when the recording is ongoing.
voiceOverlayController.settings.layout.inputScreen.titleListening = "my custom title"
/// Change the background color of the permission screen.
voiceOverlayController.settings.layout.permissionScreen.backgroundColor = UIColor.red
/// And many more...

Changing Locale or SpeechController

You can change locale or SpeechController when initializing your voiceOverlayController like so:

lazy var voiceOverlayController: VoiceOverlayController = {
  let recordableHandler = {
    return SpeechController(locale: Locale(identifier: "en_US"))
  }
  return VoiceOverlayController(speechControllerHandler: recordableHandler)
}()

You can create your own custom SpeechController class by implementing the Recordable protocol.

Note that in Swift 4, you can use Locale.current.languageCode to get current locale.

Delegate

Optionally, to listen to text and error events, you can conform to the method of the VoiceOverlayDelegate protocol.

// Second way to listen to recording through delegate
func recording(text: String?, final: Bool?, error: Error?) {
    if let error = error {
        print("delegate: error \(error)")
    }
    
    if error == nil {
        print("delegate: text \(text)")
    }
}

How it handles when Permissions are missing

When there are missing permissions, the voice overlay will guide the user to the correct section of the settings app.

Result Screen (Beta)

The result screen appears when showResultScreen is set to true.

/// Whether or not to show a result screen after the recording is finished.
voiceOverlayController.settings.showResultScreen = true

/// Timeout for showing the result screen in case no resultScreenText is provided on time.
voiceOverlayController.settings.showResultScreenTimeout = 2

/// Time for showing the result screen with the provided resultScreenText.
voiceOverlayController.settings.showResultScreenTime = 4

/// The processed result screen text that should be appear in the result screen.
voiceOverlayController.settings.resultScreenText = NSAttributedString(string: myString, attributes: myAttributes)

The widget provides a resultScreenHandler for when the result screen is dismissed (provided the "Start again" button is not clicked). The handler provides the text that has been set in resultScreenText beforehand.

voiceOverlayController.start(on: self, textHandler: { (text, final) in
    print("getting \(String(describing: text))")
    print("is it final? \(String(describing: final))")

    if final {
        // Process the result to post in the result screen.
        // The timer here simulates a network processing call that took 1.5 seconds.
        Timer.scheduledTimer(withTimeInterval: 1.5, repeats: false, block: { (_) in
            let myString = text
            let myAttribute = [ NSAttributedString.Key.foregroundColor: UIColor.red ]
            let myAttrString = NSAttributedString(string: myString, attributes: myAttribute)

            self.voiceOverlayController.settings.resultScreenText = myAttrString
        })
    }
}, errorHandler: { (error) in
    print("error \(String(describing: error))")
}, resultScreenHandler: { (text) in
    print("Result Screen: \(text)")
})

Getting Help

Getting involved

  • If you want to contribute please feel free to submit pull requests.
  • If you have a feature request please open an issue.
  • If you use InstantSearch in your app, we would love to hear about it! Drop us a line on discourse or twitter.

License

InstantSearchVoiceOverlay is available under the MIT license. See the LICENSE file for more info.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].