Skip to content

Commit

Permalink
Accept arbitrary strings as the language
Browse files Browse the repository at this point in the history
  • Loading branch information
nomeata committed Mar 8, 2015
1 parent c75b12a commit 2e2d73a
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 25 deletions.
5 changes: 5 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog for tttool

## 1.2 (2013-03-08)

* The `language` fields takes arbitrary strings, which will hopefully be
understood by the text-to-speak engine.

## 1.1 (2015-02-15)

* The yaml files support a `language` field, specifying the default language
Expand Down
2 changes: 1 addition & 1 deletion gen-windows-release.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/bash

set -e
wine cabal install --bindir=.
wine cabal install --distdir=dist-win --bindir=.
(cd Audio/digits/; ./build.sh)

rev=$(git describe --tags)
Expand Down
20 changes: 6 additions & 14 deletions src/Language.hs
Original file line number Diff line number Diff line change
@@ -1,28 +1,20 @@
{-# LANGUAGE OverloadedStrings #-}
module Language where
module Language where

import Data.Aeson.Types
import Control.Monad
import Data.Text
import Control.Applicative ((<$>))


data Language = En | De | Fr
newtype Language = Language String

defaultLanguage :: Language
defaultLanguage = En
defaultLanguage = Language "en"

ppLang :: Language -> String
ppLang En = "en"
ppLang De = "de"
ppLang Fr = "fr"
ppLang (Language l) = l

instance ToJSON Language where
toJSON = toJSON . ppLang

instance FromJSON Language where
parseJSON (String "en") = return En
parseJSON (String "de") = return De
parseJSON (String "fr") = return Fr
parseJSON (String s) = fail $ "Unknown language \"" ++ unpack s ++ "\"."
parseJSON _ = mzero
parseJSON s = Language <$> parseJSON s

15 changes: 6 additions & 9 deletions src/TextToSpeech.hs
Original file line number Diff line number Diff line change
Expand Up @@ -31,27 +31,24 @@ pico lang tmp txt =
("pico2wave", ["--wave", tmp, "--lang", l, txt])
where
l = case lang of
En -> "en-GB"
De -> "de-DE"
Fr -> "fr-FR"
Language "en" -> "en-GB"
Language "de" -> "de-DE"
Language "fr" -> "fr-FR"
Language s -> s

espeak :: Language -> FilePath -> String -> (String, [String])
espeak lang tmp txt =
("espeak", ["-v", l, "-w", tmp, "-s", "120", txt])
where
l = case lang of
En -> "en"
De -> "de"
Fr -> "fr"
Language s -> s

espeak_contrib :: Language -> FilePath -> String -> (String, [String])
espeak_contrib lang tmp txt =
("./contrib/espeak", ["-v", l, "-w", tmp, "-s", "120", txt])
where
l = case lang of
En -> "en"
De -> "de"
Fr -> "fr"
Language s -> s


engines :: Language -> FilePath -> String -> [(String, [String])]
Expand Down
2 changes: 1 addition & 1 deletion tttool.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
-- documentation, see http://haskell.org/cabal/users-guide/

name: tttool
version: 1.1
version: 1.2
synopsis: Working with files for the Tiptoi® pen
description: The Ravensburger Tiptoi® pen is programmed via special
files. Their file format has been reverse engineered; this
Expand Down

0 comments on commit 2e2d73a

Please sign in to comment.