# Types

  - [AudioRecorder](AudioRecorder.md):
    An audio recorder implementation that uses AVFoundation audio engine for capturing the input.
  - [AudioRecorder.AudioRecorderError](AudioRecorder_AudioRecorderError.md):
    Errors thrown by the audio recorder.
  - [AudioContext](AudioContext.md):
    The speech recognition context.
  - [UserDefaultsCache](UserDefaultsCache.md):
    A cache implementation that uses `UserDefaults` as the backing storage.
  - [Client](Client.md):
    A client that implements `SpeechClientProtocol` on top of Speechly SLU API and an audio recorder.
  - [Client.SpeechlyClientInitError](Client_SpeechlyClientInitError.md):
    Represents different error situations when initializing the SpeechlyClient.
  - [Entity](Entity.md):
    A speech entity.
  - [Entity.ID](Entity_ID.md):
    A custom ID implementation for `SpeechEntity`.
    Since entities have two indices, start and end,
    this struct encapsulates the two for indexing and sorting purposes.
  - [GRPCAddress](GRPCAddress.md):
    A gRPC service address.
  - [GRPCAddress.ParseError](GRPCAddress_ParseError.md):
    Errors thrown when parsing the address.
  - [ApiAccessToken](ApiAccessToken.md):
    A struct representing an access token returned by Speechly Identity service.
  - [ApiAccessToken.AuthScope](ApiAccessToken_AuthScope.md):
    Token authorisation scopes.
    They determine which services can be accessed with this token.
  - [ApiAccessToken.TokenType](ApiAccessToken_TokenType.md):
    Type of token, determines the possible Speechly Apps that are accessible.
  - [CachingIdentityClient](CachingIdentityClient.md):
    A client for Speechly Identity gRPC API which provides token caching functionality.
  - [IdentityClient](IdentityClient.md):
    A client for Speechly Identity gRPC API.
  - [IdentityClient.IdentityClientError](IdentityClient_IdentityClientError.md):
    Errors returned by the client.
  - [Intent](Intent.md):
    A speech intent.
  - [InvalidSLUState](InvalidSLUState.md):
    Possible invalid states of the client, eg. if `startContext` is called without connecting to API first.
  - [SluClient](SluClient.md):
    An SluClientProtocol that is implemented on top of public Speechly SLU gRPC API.
    Uses `swift-grpc` for handling gRPC streams and connectivity.
  - [SluConfig](SluConfig.md):
    SLU stream configuration describes the audio data sent to the stream.
    If misconfigured, the recognition stream will not produce any useful results.
  - [Segment](Segment.md):
    A segment is a part of a recognition context (or a phrase) which is defined by an intent.
  - [SpeechlyError](SpeechlyError.md):
    Errors caught by `SpeechClientProtocol` and dispatched to `SpeechClientDelegate`.
  - [Transcript](Transcript.md):
    A speech transcript.
  - [MicrophoneButtonView](MicrophoneButtonView.md)
  - [SpeechBubbleView](SpeechBubbleView.md)
  - [TranscriptView](TranscriptView.md)

# Protocols

  - [AudioRecorderProtocol](AudioRecorderProtocol.md):
    A protocol for capturing audio data from input sources (microphones).
  - [AudioRecorderDelegate](AudioRecorderDelegate.md):
    Delegate called when audio recorder receives some data or an error, or when it has been stopped.
  - [CacheProtocol](CacheProtocol.md):
    A protocol for a cache storage.
  - [Promisable](Promisable.md):
    A protocol that defines methods for making succeeded and failed futures.
  - [IdentityClientProtocol](IdentityClientProtocol.md):
    Protocol that defines a client for Speechly Identity API.
  - [SluClientProtocol](SluClientProtocol.md):
    A protocol defining a client for Speechly SLU API.
  - [SluClientDelegate](SluClientDelegate.md):
    Delegate called when an SLU client receives messages from the API or catches an error.
    The intended use of this protocol is with `SluClientProtocol`.
  - [SpeechlyProtocol](SpeechlyProtocol.md):
    A speech client protocol.
  - [SpeechlyDelegate](SpeechlyDelegate.md):
    Delegate called when a speech client handles messages from the API or catches an error.
  - [MicrophoneButtonDelegate](MicrophoneButtonDelegate.md)

# Global Functions

  - [makeChannel(addr:​loopCount:​)](makeChannel\(addr:loopCount:\).md):
    A function that creates a new gRPC channel for the provided address.
    It will also create a NIO eventloop group with the specified loop count.
  - [makeChannel(addr:​group:​)](makeChannel\(addr:group:\).md):
    A function that creates a new gRPC channel for the provided address.
  - [makeTokenCallOptions(token:​)](makeTokenCallOptions\(token:\).md):
    A function that creates new gRPC call options (metadata) that contains an authorisation token.