Skip to content

Membrane plugin providing speech recognition via IBM Cloud Speech-to-Text service

License

Notifications You must be signed in to change notification settings

membraneframework/membrane_element_ibm_speech_to_text

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Membrane Multimedia Framework: IBM Speech To Text

Hex.pm API Docs CircleCI

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.

Installation

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

Usage

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"}
]

Testing

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 and License

Copyright 2019, Software Mansion

Software Mansion ipeline Licensed under the Apache License, Version 2.0

About

Membrane plugin providing speech recognition via IBM Cloud Speech-to-Text service

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages