This package provides a Sink wrapping IBM Speech To Text Streaming API client. Currently supports only audio streams in FLAC format.
The docs can be found at HexDocs.
The package can be installed by adding membrane_element_ibm_speech_to_text
to your list of dependencies in mix.exs
:
def deps do
[
{:membrane_element_ibm_speech_to_text, "~> 0.9.0"}
]
end
The input stream for this element should be parsed, so most of the time it should be placed in pipeline right after FLACParser
Here's an example of pipeline streaming audio file to speech recognition API:
defmodule SpeechRecognition do
use Membrane.Pipeline
alias IBMSpeechToText.Response
alias Membrane.{File, IBMSpeechToText}
alias Membrane.FLAC.Parser
@impl true
def handle_init(_ctx, _opts) do
structure =
child(:src, %File.Source{location: "sample.flac"})
|> child(:parser, Parser)
|> child(:sink, %IBMSpeechToText{
region: :frankfurt,
api_key: "PUT_YOUR_API_KEY_HERE"
})
{[spec: structure, playback: :playing], nil}
end
@impl true
def handle_child_notification(%Response{} = response, _element, _ctx, state) do
IO.inspect(response)
{[], state}
end
def handle_child_notification(_notification, _element, _ctx, state) do
{[], state}
end
end
To run, the pipeline requires following dependencies:
[
{:membrane_core, "~> 1.0"},
{:membrane_file_plugin, "~> 0.16.0"},
{:membrane_flac_plugin, "~> 0.11.0"},
{:membrane_element_ibm_speech_to_text, "~> 0.9.0"}
]
The tests contacting real IBM API are excluded by default. You can run them using mix test --include external
.
To make it work, you need to provide api key via config/config.exs
or config/test.secret.exs
the file needs to look like this:
use Mix.Config
config :ibm_speech_to_text, region: :your_region # e.g. :frankfurt
config :ibm_speech_to_text, api_key: "YOUR_API_KEY_HERE"
Copyright 2019, Software Mansion
ipeline
Licensed under the Apache License, Version 2.0