README.md

# Say

Text-to-Speech module for Elixir.

It exposes a function `Say.say/1` that tells the underlying OS or through a SSH tunnel to say the given text.

## Why?

While programming I found it very useful to get acustic feedback from some background jobs which execute elixir code.

One concrete sample is when RiotJS markup files has to be compiled to JavaScript. This watch-compile-loop is implemented with elixir, and when a compile fails, my laptop says "riot compile error".

## Usage

```
Import Say

def foo() do
  if func() do
    say("success")
  else
    say("error in foo")
  end
end
```

## Configuration

In the file 'project/config/config.exs'

### Say via function
```
config :say,
  :func, &IO.inspect/1
```

### Say directly with OS fatures
```
config :say,
  exec: "say",
```

On the Mac the executable 'say' can be used directly.

On Linux I haven't tried, but these should work [command-line-text-speech-apps-linux](https://linuxhint.com/command-line-text-speech-apps-linux/)

### Say via SSH tunnel
```
config :say,
  exec: "say",
  ssh_args: ~w(-p 2209 localhost)
```

## Installation

The package can be installed by adding `say` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:say, "~> 0.1.0"}
  ]
end
```

## Documentation

The docs can be found at <https://hexdocs.pm/say>.