{"id":15038636,"url":"https://github.com/spokestack/spokestack-ios","last_synced_at":"2025-10-04T03:31:58.203Z","repository":{"id":48541959,"uuid":"148171496","full_name":"spokestack/spokestack-ios","owner":"spokestack","description":"Spokestack: give your iOS app a voice interface!","archived":true,"fork":false,"pushed_at":"2021-08-25T22:09:23.000Z","size":10422,"stargazers_count":42,"open_issues_count":1,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-01T10:41:44.819Z","etag":null,"topics":["asr","hacktoberfest","ios","natural-language-understanding","speech-api","speech-processing","speech-recognition","speech-synthesis","speech-to-text","swift","tensorflow","text-to-speech","vad","voice-activity-detection","voice-assistant","voice-recognition","voice-synthesis","wakeword","wakeword-activation"],"latest_commit_sha":null,"homepage":"https://spokestack.io","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spokestack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-10T14:50:29.000Z","updated_at":"2024-11-02T04:42:07.000Z","dependencies_parsed_at":"2022-08-26T08:01:30.123Z","dependency_job_id":null,"html_url":"https://github.com/spokestack/spokestack-ios","commit_stats":null,"previous_names":[],"tags_count":87,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spokestack%2Fspokestack-ios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spokestack%2Fspokestack-ios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spokestack%2Fspokestack-ios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spokestack%2Fspokestack-ios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spokestack","download_url":"https://codeload.github.com/spokestack/spokestack-ios/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235216207,"owners_count":18954253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asr","hacktoberfest","ios","natural-language-understanding","speech-api","speech-processing","speech-recognition","speech-synthesis","speech-to-text","swift","tensorflow","text-to-speech","vad","voice-activity-detection","voice-assistant","voice-recognition","voice-synthesis","wakeword","wakeword-activation"],"created_at":"2024-09-24T20:39:22.624Z","updated_at":"2025-10-04T03:31:52.823Z","avatar_url":"https://github.com/spokestack.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca href=\"https://www.spokestack.io/docs/ios/getting-started\" title=\"Getting Started with Spokestack + iOS\"\u003e![Spokestack iOS](./images/spokestack-ios.png)\u003c/a\u003e\n\nSpokestack provides an extensible speech recognition pipeline for the iOS\nplatform. It includes a variety of built-in speech processors for Voice\nActivity Detection (VAD), wakeword activation, and Automatic Speech Recognition (ASR).\n\n\u003c!--ts--\u003e\n## Table of Contents\n* [Features](#features)\n* [Installation](#installation)\n* [Usage](#usage)\n* [Documentation](#Documentation)\n* [Reference](#Reference)\n* [Deployment](#Deployment)\n* [License](#license)\n\u003c!--te--\u003e\n\n## Features\n\n  - Voice activity detection\n  - Wakeword activation with two different implementations\n  - Simplified Automated Speech Recognition interface\n  - Speech pipeline seamlessly integrates VAD-triggered wakeword detection using on-device machine learning models with transcribing utterances using platform Automated Speech Recognition\n  - On-device Natural Language Understanding utterance classifier\n  - Simple Text to Speech API\n\n## Installation\n[![](https://img.shields.io/cocoapods/v/Spokestack-iOS.svg)](https://cocoapods.org/pods/Spokestack-iOS)\n\n[CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate Spokestack into your Xcode project using CocoaPods, specify it in your Podfile:\n\n`pod 'Spokestack-iOS'`\n\n## Usage\n\n[Spokestack.io hosts extensive usage documentation](https://www.spokestack.io/docs/ios) including tutorials, integrations, and recipe how-tos.\n\n### Configure Wakeword-activated Automated Speech Recognition\n\n ```\n import Spokestack\n // assume that self implements the SpokestackDelegate protocol\n let pipeline = SpeechPipelineBuilder()\n     .addListener(self)\n     .useProfile(.appleWakewordAppleSpeech)\n     .setProperty(\"tracing\", Trace.Level.PERF)\n pipeline.start()\n ```\n\nThis example creates a speech recognition pipeline using a configurable wakeword detector that is triggered by VAD, which in turn activates an the native iOS ASR, returning the resulting utterance to the `SpokestackDelegate` observer (`self` in this example).\n\nSee `SpeechPipeline` and `SpeechConfiguration` for further configuration documentation.\n\n### Text to Speech\n\n```\n// assume that self implements the TextToSpeechDelegate protocol\nlet tts = TextToSpeech(self, configuration: SpeechConfiguration())\ntts.speak(TextToSpeechInput(\"My god, it's full of stars!\"))\n```\n\n### Natural Language Understanding\n\n```\nlet config = SpeechConfiguration()\nconfig.nluVocabularyPath = \"vocab.txt\"\nconfig.nluModelPath = \"nlu.tflite\"\nconfig.nluModelMetadataPath = \"metadata.json\"\n// assume that self implements the NLUDelegate protocol\nlet nlu = try! NLUTensorflow(self, configuration: configuration)\nnlu.classify(utterance: \"I can't turn that light in the room on for you, Dave\", context: [:])\n```\n\n#### Troubleshooting\n\nA build error similar to `Code Sign error: No unexpired provisioning profiles found that contain any of the keychain's signing certificates` will occur if the bundle identifier is not changed from `io.Spokestack.SpokestackFrameworkExample`, which is tied to the Spokestack organization.\n\n## Reference\n\nThe `SpokestackFrameworkExample` project is a reference implementations for how to use the Spokestack library, along with runnable examples of the VAD, wakeword, ASR, NLU, and TTS components. Each component has a button on the main screen, and can be started, stopped, predicted, or synthesized as appropriate. The component screens have full debug tracing enabled, so the system control logic and debug events will appear in the XCode console.\n\n## Documentation\n\n### Getting Started, Cookbooks, and Conceptual Guides\n\n[Step-by-step introduction](https://spokestack.io/docs/iOS/getting-started), [common usage patterns](https://spokestack.io/docs/iOS/cookbook), and [discussion of concepts](https://spokestack.io/docs/Concepts/pipeline-configuration) used by the library, [design guides for voice interfaces](https://spokestack.io/docs/Design/getting-started), and [the Android library](https://spokestack.io/docs/Android/getting-started) may all be found [on our website](https://spokestack.io/docs).\n\n### API Reference\n\nAPI reference is [available on Github](https://spokestack.github.io/spokestack-ios/index.html).\n\n## Deployment\n\n### Preconditions\n\n  0. Ensure that `git lfs` has been installed: https://git-lfs.github.com/. This is used to manage the storage of the large model and metadata files in `SpokestackFrameworkExample`.\n  1. Ensure that CocoaPods has been installed: `gem install cocoapods` ([not via `brew`](https://github.com/CocoaPods/CocoaPods/issues/8955)).\n  2. Ensure that you are registered in CocoaPods: `pod trunk register YOUR_EMAIL --description='release YOUR_PODSPEC_VERSION'`\n\n### Process\n  1. Increment the `podspec` version in `Spokestack-iOS.podspec`\n  2. `pod lib lint --use-libraries --allow-warnings`, which should pass all checks\n  3. `git commit -a -m 'YOUR_COMMIT_MESSAGE' \u0026\u0026 git tag YOUR_PODSPEC_VERSION \u0026\u0026 git push --origin`\n  4. `pod trunk push  --use-libraries --allow-warnings`\n\n## License\n[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0)\n\nCopyright 2020 Spokestack, Inc.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspokestack%2Fspokestack-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspokestack%2Fspokestack-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspokestack%2Fspokestack-ios/lists"}