Poprawianie błędów wymowy w poleceniu „Powiedz” w Terminalu

4

Mam trudności z poprawieniem wymowy w poleceniu „powiedz”, używając 10.9.

Próbowałem dodać nowe wymowy poprzez:

Preferencje systemowe> Dyktowanie i mowa> Otwórz preferencje dostępności> Otwórz narzędzie VoiceOver> Mowa> Wymowa> +

Po dodaniu nowego wpisu wypróbowałem go zarówno w Terminalu, jak i TextEdit i nie wymawiałem go poprawnie:

$ say -v "Samantha" -f filename.txt -o audiofile.aiff

Chociaż nie działało w TextEdit (Edycja> Mowa> Zacznij mówić), chcę móc to osiągnąć w Terminalu.

Czy ktoś ma pojęcie o tym, jak mogę to zrobić?

user75350
źródło
tuż przed pójściem do Wymowa, zamiast tego w zakładce Głosy, czy Samantha jest głosem domyślnym? Być może szkolenie działa tylko w przypadku domyślnego.
dwightk
Tak ona jest. Nadal nie wydaje się, żeby to działało.
user75350

Odpowiedzi:

2

Proszę bardzo:

# read.sh <file-to-read> [name-of-voice]
#!/bin/bash

textToRead=$(cat $1)

IFS=$'\n'
while read rep; do
        IFS=" "
        repArray=( $rep )
        textToRead=${textToRead//${repArray[0]}//${repArray[1]}}
done < replacements.txt

if [ -z $2 ]; then
        echo "$textToRead" | say
else
        echo "$textToRead" | say -v $2
fi

Ten skrypt powłoki odczytuje zamienniki replacements.txti używa polecenia say do odczytania zawartości plików po zastąpieniu elementów zdefiniowanych w replacements.txt.

replacements.txt: Jedna linia na wymianie, <search> <replace>.

Przepraszam za brzydki kod ... Nienawidzę skryptów bash.

Max Ried
źródło
1
To jest niesamowite! Dziękuję bardzo za poświęcenie czasu na napisanie tego!
user75350
3

Zgodnie z wątkiem z 2007 r. Na stronie Discusions.apple.com narzędzie VoiceOver naprawia tylko wymowy w samym VoiceOver, a nie w mowie.

Więc jeśli chcesz saypoprawnie wymawiać słowa, powinieneś uruchomić szukanie i zamienić na plik tekstowy na każde błędne słowo. Prawdopodobnie jest to dobry sposób na zrobienie tego w jednym kroku za pomocą skryptu , ale jeśli chcesz to zrobić raz, możesz:

  1. Otwórz plik w edytorze tekstu (lub dowolnym edytorze tekstu, który wolisz, lubię Text Wrangler)
  2. Znajdź (np.) „Kobiety” i zastąp wszystko „wimmen” (znajduje się Edit > Find > Find and Replace...w edycji tekstu)
  3. Przejdź do następnego słowa, które chcesz poprawić, znajdując i zastępując wszystko, aż poprawisz wszystkie błędne wymowy.
  4. Uruchom sayw niepoprawnie napisanym pliku tekstowym.
dwightk
źródło
Dzięki. Jaki byłby najlepszy sposób, aby to zrobić? Czy byłoby znalezienie i zastąpienie każdego źle wymawionego słowa za pomocą sed, czy jest lepszy sposób? Tylko z ciekawości, czy jest gdzieś dostępne narzędzie do wyszukiwania słownika?
user75350
1
prawdopodobnie możesz zbudować komendę sed, która zrobi wszystkie znalezione i zastąpi w jednym wierszu, a następnie zapisze to jako skrypt basha. Gdy znajdziesz nowe błędne wymowy, możesz po prostu edytować skrypt.
dwightk