Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linuxで日本語の扱えるTTS(Text-to-speech)を試す
Search
Kenichiro MATOHARA
August 08, 2020
Technology
0
2.5k
Linuxで日本語の扱えるTTS(Text-to-speech)を試す
Kenichiro MATOHARA
August 08, 2020
Tweet
Share
More Decks by Kenichiro MATOHARA
See All by Kenichiro MATOHARA
最近試したLinuxのOCRツール(NDL古典籍OCR-Lite/YomiToku)
matoken
0
19
LibreOfficeで日本語Linterが使いたい
matoken
0
7
KSMBDでSMB共有
matoken
0
5
asciinema playerで大きな端末録画を共有する
matoken
0
16
ターミナルを共有するいろいろ
matoken
0
12
textlintで日本語をまともに(Neovim/VS Code)
matoken
0
30
TUI Bluetooth マネージャーの bluetuith
matoken
0
35
Galene用SpeachToTextのgalene-sttを試す
matoken
0
19
ターミナルでプレゼンテーション その3-presentermを試す-
matoken
0
71
Other Decks in Technology
See All in Technology
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
160
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
120
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
180
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
1
230
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
150
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
ガバメントクラウドのセキュリティ対策事例について
fujisawaryohei
0
530
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
110
コンテナセキュリティのためのLandlock入門
nullpo_head
2
320
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
How to Ace a Technical Interview
jacobian
276
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
GraphQLとの向き合い方2022年版
quramy
44
13k
What's in a price? How to price your products and services
michaelherold
243
12k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Agile that works and the tools we love
rasmusluckow
328
21k
Code Review Best Practice
trishagee
65
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Transcript
Linuxで日本語の扱えるTTS(Text-to-speech)を試す
Kenichiro Matohara(matoken) https://matoken.org/ 鹿児島から参加 ADSL回線下りは案外どうにかなるけど登り辛い Rakuten mobile(mini)申込みから2ヶ月以上経過…… お仕事募集 mailto:
[email protected]
鹿児島らぐ 前回07/26(日) オンライン開催 Discord(音声+text+画面共有) + Eterpad(Note) 参加地域は鹿児島県x3,東京都x1,静岡県x1,岐阜県x1,愛知県x2 「Photon OSを使ってみた話」 「ssh
login時の通知を簡単に設定できないか?の相談」 「ArchiveBoxで自分用WebArchive(django版)」 「5月のYoctoLTSの続報」 「ArchLinuxのインストールがうまく行かない相談」 「m3u8のプレイリストからダウンロード」 「Free RADIUSサーバーの構築についての相談」 次回08/23(日) オンライン開催
前前回の補足 Linux環境で(低解像度の)画面共有を行うTips Xephyr等でXをウィンドウで起動すると便利 ウェブブラウザやElectronはOKだけどZoom.us clientでは何故か共有画面に出 てこない Zoom.usをウェブブラウザで利用(高負荷時に音が死ぬ) Zoom.us clientで画面共有時に「画面の部分」を選びXephyr部分を共有 New!
Linuxで日本語の扱えるTTS(Text-to-speech)を試す
TTS(Text-to-speech) テキストからコンピュータに喋ってもらう 「こんにちは」 スマートスピーカー,テキスト読み上げ 今回は自分が声を出せない時に代わりに喋って貰いたいと思って試した
Confirmed: Raspberry Pi & PC Raspberry Pi OS buster amd64(β)
Debian sid amd64
最近試したLinuxで使えるもの eSpeak Festival N2 Linux無償版 Open JTalk Svox Pico translate-cli
日本語標準対応 N2 Linux無償版 Open JTalk translate-cli
日本語非対応エンジンで日本語 無理やり日本語を喋らせることも(ゴノレゴ的な) mecab で開いてカナに, ucinv でローマ字に $ echo "こんにちは" |
mecab -Oyomi | uconv -x latin | espeak $ echo 'こんにちは' | mecab -Oyomi | uconv -x latin | festival --tts $ WAVE="`mktemp`.wav" && pico2wave -w $WAVE "`echo "こんにちは" | \ mecab -Oyomi | uconv -x latin`" && aplay $WAVE ; rm $WAVE
translate-cli コマンドラインでいろいろな翻訳 リモートのウェブサービスを無理やり利用(Google/bing/Yandex等) -> 回線必須 翻訳の読み上げ機能を流用してTTSが可能 日本語TTSは試した限りGoogleのみ 沢山叩いたりサービス変更で動かなくなる グレーな感じのツール
導入 $ sudo apt install translate-shell
翻訳例(日->英) $ trans -s ja -t en こんにちは こんにちは (Kon'nichiwa)
Hello 「こんにちは」の翻訳 [ 日本語 -> English ] こんにちは Hello, Hi there, good afternoon, Hi
translate-cliをTTSとして使う例 -b で一番関連性の高いものだけ -p でTTS $ trans -b -p こんにちは
N2 KDDIのN2 端末単体で動作 Linuxの他にAndroid/iOS/Windows/マイコン版もある カスタム辞書も利用可能(未確認)
N2 Linux無償版 動作環境 Debian 7 以降 (対応アーキテクチャ:amd64, armel, armhf, i386)
Ubuntu 14.04 LTS以降 (amd64, arm64, armhf, i386) Raspbian (wheezy以降)
N2 利用規約 第2条 使用権の許諾、使用期間 本契約によって本ソフトウェアを使用することができるのはお客様本人のみで、 本ソフトウェアを1台のLinux機器にインストールして、インストール後30日間 に限り使用することができます。
N2 利用規約 第5条 禁止事項 より (6)本規約で弊社が別途許諾している場合以外に、営利・非営利に拘らず、本 ソフトウェア、 又は本ソフトウェアの使用により作成された音声データを、複製、頒布、貸与、 譲渡、公衆送信、 送信可能化若しくは上映すること(家庭内や少数の友人間など限られた範囲内で
使うために 行う本音声データの複製については除く。)
一般公開は無理そう? しかし,デモ映像ページには以下のような記述がある 無償版で作成したプロトタイプ(作ってみた)をYoutubeにアップしてTwitterな どでお知らせいただければ、こちらでもご紹介させていただきます。
導入 $ tar xf ./n2-linux-foc-*.tar.gz $ sudo dpkg -i ./n2-linux-foc-*/*.deb
n2ttsコマンド $ n2tts -o - こんにちは | aplay
声質モデルデータ指定(-m) $ ls /usr/share/n2tts/voice/ fa001.dat fa003.dat fa005.dat fb002.dat fb004.dat ma001.dat
ma003.dat ma005.dat mb002.dat mb004.dat fa002.dat fa004.dat fb001.dat fb003.dat fb005.dat ma002.dat ma004.dat mb001.dat mb003.dat mb005.dat $ ls -1 /usr/share/n2tts/voice/ | xargs -n1 -I{} sh -c "n2tts -m {} -o - こんにちは | aplay"
音声パラメータ設定(-p key=value) SPEECHRATE 64…1024(default 256) 小さいほうが早口 PITCH -1536…1536(default 0) 小さいほうが低い
PITCHRANGE 0…1024(default 256)
早口でしゃべる $ n2tts -p SPEECHRATE=176 -o - -- こんにちは
N2で青空文庫読み上げ UTF8に変換して1行毎にTTSに掛ける 132892文字問題なく最後まで読み上げられた $ wget -O - https://www.aozora.gr.jp/cards/001090/files/42307_txt_24297.zip | \
zcat | nkf -w | xargs -I{} -n1 sh -c "echo {}; n2tts -o - -- {} | aplay 2>/dev/null "
Open JTalk 端末単体で動作 日本語対応だと一番メジャー? 今回はDebian packageのものを利用 open-jtalk TTSシステム hts-voice-nitech-jp-atr503-m001 音声データ
open-jtalk-mecab-naist-jdic NAISTの辞書データ
幾つかのOpen JTalk向け音響モデル Open JTalk - Browse /HTS voice at SourceForge.net
MMDAgent - Browse /MMDAgent_Example at SourceForge.net icn-lab/htsvoice-tohoku-f01: Japanese female HTS voice with four emotions {angry, happy, neutral, sad}
とりあえずしゃべる $ echo こんにちは | open_jtalk \ -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow /dev/stdout | aplay
青空文庫読み上げ $ wget -O - https://www.aozora.gr.jp/cards/001090/files/42307_txt_24297.zip | \ zcat |
nkf -w | xargs -I{} -n1 sh -c "echo {}; echo {} | open_jtalk -m \ /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \ -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow /dev/stdout | aplay" 最後まで読み上げたけどN2に比べ変換に時間がかかるようで空白時間が発生して気に なる
N2/Open JTalkの変換時間比較 約400バイトのテキストを読み上げて /dev/null に $ wc -c text 398
text $ \time -f "real %e" sh -c "cat text|open_jtalk -m \ /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \ -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow /dev/null" real 2.80 $ \time -f "real %e" n2tts -o /dev/null `cat text` real 0.71 Open JTalk 2.8s N2 0.71s ※Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz すぐに声を出したい場合は文を短くするなどの工夫をしたほうが良さそう
TTS活用 Twitter hashtag読み上げ イベントのサブチャンネルで読み上げたり? 声を出せない環境でビデオチャットやボイスチャットに音声参加
Twitter読み上げ…… 以前作った物かmikutterを流用しようとしたらBANされたアカウントのTwitterAPI IDだ ったので今のアカウントで再取得 Twitter API IDの取得に失敗 unable to approve
your developer application at this time. 新しく申請も出来ない……
sayakaちゃん twitter クライアント sayaka ちゃん ターミナル特化Twitter client.SIXELに対応していれば画像も表示できる.OSCで x68000などで動かして展示されている.
sayakaちゃんを利用してTwitter読み上げ Tweetをファイルに保存 $ sayaka --record-all koedolug.json '#koedolug' ファイルからtweetを抜き出してTTS $ stdbuf
-oL tail -f koedolug.json |stdbuf -i0 -oL jq -r .text | stdbuf -i0 -oL \ xargs -I{} -n1 sh -c "echo {}; stdbuf -i0 -oL n2tts -o - -- {} | aplay 2>/dev/null" 副音声や距離の概念のあるサービスなどに?(Second Life, Remo, Hubs Cloud, Online Town, SpatialChat……)
TTSでしゃべる 深夜,外出先,など声を出しづらいときなどに? テキスト入力時間が必要なので実用度は?
TTSの音声をマイクに入れる Zoom.us画面共有時 -> 「 コンピュータの音声を共有」 その他 -> ソフトウェアミキサーでマイクと合成
PulseAudio環境でオーディオをマイクとミックスしてビデオ会議に参加でき るようにするscript これを実行後PCのオーディオもマイクの音声と一緒に流れていくようになる $ git clone https://github.com/toadjaune/pulseaudio-config $ cd pulseaudio-config
$ ./pulse_setup.sh toadjaune/pulseaudio-config: Scripts and notes for custom pulseaudio configuration
音が小さい 一人で試してるときは気づかなかった Volume Controle(pavucontrol)で最大にしても聞こえない? aplayでボリューム上げ方わからなかったので sox の play を利用 play
-v 10
次世代のTTS? 自然な人間に近いTTS 今の所UK/US DeepMindのGANを利用したTTS [1909.11646] High Fidelity Speech Synthesis with
Adversarial Networks Amazon Pollyのニューラルネットワークを利用したTTS Amazon Polly Introduces Neural Text-To-Speech and Newscaster Style | AWS News Blog 日本語も出てくるのを期待
まとめ ぎごちないながらもLinux端末だけで日本語のTTSが出来る テキストを読み上げてもらいながら作業事等に聞くのに便利 リアルタイムの音声チャットでの実用度は? 発言の多いTwitterやChatを副音声などで読み上げるのはありかも?
おまけ 先月,先々月と画面共有に失敗していたのでテキストベースのプレゼンを用意 ttyd で端末をhttpで共有,ウェブブラウザで閲覧可能にしておく Markdownで記述したスライドを mdp を使い端末で表示(ほぼMarp Nextで利用で きる形式でokだった) その他,ttvでウェブカメラ表示,mapsciiで地図表示
発表してみて ttyd を操作可能にしていたのでウェブブラウザで開かれるたびに画面リサイズ が発生してしまうという問題が発生 今回は表示だけで良いので -R オプションを付けるべきだった 表示されているテキストをそのままコピーできるのは便利 (しかし今月は画面共有もうまく行ったので必要なかった)
奥付 発表: 「小江戸らぐ 8月のオフな集まり(第217回)」 発表者: Kenichiro Matohara mailto:
[email protected]
license: CC-BY-NC-SA
4.0 powered by VSCodium + mdp + Marp-CLI 参考URL: https://wiki.matoken.org/linux/tts