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
音声合成してみよう
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
xztaityozx
February 25, 2023
Programming
1.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
音声合成してみよう
第63回シェル芸勉強会のLTで使った資料です
xztaityozx
February 25, 2023
More Decks by xztaityozx
See All by xztaityozx
呪符式高速詠唱シェル芸 3
xztaityozx
0
800
Other Decks in Programming
See All in Programming
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.9k
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
0
150
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
170
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
170
Oxlintのカスタムルールの現況
syumai
6
1.2k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
260
これからAgentCoreを触る方へトレンドはGatewayです
har1101
2
150
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
290
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
110
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
8.4k
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
820
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
Design in an AI World
tapps
1
250
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Accessibility Awareness
sabderemane
1
140
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
A better future with KSS
kneath
240
18k
Transcript
音声合成してみよう たいちょー
みなさん#!/bin/bash(こんにちはの意) たいちょーです twitter: @xztaityozx_001 GitHub: xztaityozx 好きな言語: C#, Go 職業:
お嬢様系難読化シェル芸人
今回の話 自分の音声で単純な音声合成をしてみる話
筋トレしてますか 私はやってます めちゃくちゃ追い込む感じではなく、ゆるく自宅トレーニングしてます ちょっっっとだけ育ってきてちょっとうれしい これからも頑張ります でも…
回数数えるのが面倒
回数数えるのが面倒 どの動きをN回、という感じ。回数を数えておく必要がある でも運動の方に集中したいので、回数が分からなくなりがち 回数を電子音で知らせるアプリもあるけど、今何回目かがわかりにくくてむずい トレーナーがいれば楽ですが…家にはいない…!
トレーナー作ればいい じゃん
音声合成を使ってトレーナーを作ろう 音声合成 テキストから音声を人工的に生成するやつ そんな感じのソフトウェアが割とある Open JTalk N2 TTS A.I VOICE
まだまだたくさん 回数を数える文章を書いて音声を合成すればトレーナーが作れる!
音声合成してみる 今回はA.I VOICE 紲星あかりを使 ってみます 理由 API用のDLLが配られて て、プログラムから音 声を合成しやすい かわいい
cute... いい感じですね APIを使って簡単にメニューを音声合成できるようにしたいですね! なんなら、WebサーバーにしてLAN内に公開したいですね! スマホから操作できてうれしいからですね! ちなみに、APIを使ったサーバーをインターネットに公開するのは規約で 禁止されてます でも 名前付きパイプを使う都合、.NET6ではできないですね とはいえ.NET
FrameworkではWebサーバーを書くのがめんどくさいですね
なんかこう…もっと手軽に合成したい… したいですね
自分の声合成すればい いじゃん そうかな…そうかも…
自分の音声合成ソフトを作ってみよう 手法 i. 50音を録音 ii. 文字列を1文字ずつ分割 iii. 対応する音声ファイルを ffmpeg で連結
iv. 完成 すごく簡単ですね!
録音 以下のコマンドで生成した文字を一つずつ録音していきます echo {ァ..ン} | fmt -1 | grep -v
'[ァ|ィ|ゥ|ェ|ォ|ヮ|ャ|ュ|ョ|ヰ|ヱ|ッ]'
None
分割 Audacityの機能を使って録音ファイルをから一文字ずつ分割していきます。 分割後のファイルはシェル芸で名前を付けておきます $ echo {あ..ん} | fmt -1 |
grep -v '[ぁぃぅぇぉゃっゅょゎゑゐ]' | paste - <(ls) | rargs mv {2} {1}.mp3 あ.mp3 , い.mp3 という感じのデータができます。
合成 ffmpeg で音声を合成します。 「こんにちは」だとすると、以下のコマンドで生成できます $ ffmpeg -i "concat:こ.mp3|ん.mp3|に.mp3|ち.mp3|は.mp3" out.mp3
聞いてみよう!
こわい! そして全然かわいくない
なぜ怖いのか いろいろあると思いますが、一番は抑揚がないからですね
UniDicでアクセントを知らべてみる UniDic UniDicとは、国立国語研究所の規定した斉一(せいいつ)な言語単位(短単位) と、 階層的見出し構造に基づく電子化辞書の ① 設計方針 および、その実装としてのリレーショナルデータベース ② UniDicデータベース
と、そのデータベースからエクスポートされた短単位をエントリ(見出し語)と する、形態素解析器MeCab用の解析用辞書 ③ 解析用UniDic の総称です。
UniDicでアクセントを調べてみる 25番目のフィールド(= aType )がアクセント位置です 26,27番目のフィールドも使ってアクセントを修飾しますが、今回は単純化のため に位置だけを見ます こんにちは の場合は5文字目 $ echo
こんにちは | mecab -d /var/lib/mecab/dic/unidic こんにちは 感動詞,...省略...,コンニチハ,5,,,37963946107478528,138112 EOS
アクセント位置用の音声を用意する ピッチを調整した音声を用意します ffmpeg を使います 1.01倍にします $ ls *.mp3 | rargs
-p '(.+)\.mp3' ffmpeg -y -i {} -af 'asetrate=44100*101/100,atempo=100/101' {1}_accent.mp3
アクセントを考慮した音声を合成してみる アクセントの効果をわかりやすくするために、ここでは「よろしくお願いいたしま す」を使います $ ffmpeg -i concat:$(echo よろしくお願いいたします|\ mecab -d
/var/lib/mecab/dic/unidic | \ awk 'NF>1{print $2}' | \ sel -d, 21 25 | \ awk '{for(i=1;i<=length($1);i++) if(i==$2) { print substr($1, i, 1)"_accent.mp3" } else print substr($1, i, 1)".mp3"}' | \ paste -sd\|) \ ./output.mp3
聞いてみよう!
こわい!! かなしいね
APIサーバーを建ててみました… いい感じにできたらWebサービスとして公開してみるかと思ってました いい感じになってないですが公開しました。ただしAPIだけ… https://[サ終しました].ap-northeast-1.awsapprunner.com/api/Generate {"Text": "こんにちは"} といった感じのJSONをPOSTしてやると、音声フ ァイルへのURLが返ってきます AWS App
Runnerの素振りがしたかったのがほとんどのモチベです 今日中にサーバーは落とすので試すなら今!! # httpie の例 $ http --json POST https://[サ終しました].ap-northeast-1.awsapprunner.com/api/Generate Text=こんにちは
まとめ 1. 筋トレのトレーナーのかわりに音声合成を使おうと思った 2. なんかもっとサッとやりたかったので、自分の音声を使った音声合成をやってみ た 3. こわかった 4. アクセントをつけてみた
5. こわかった App Runnerめちゃ簡単で良かったのでおススメです
$ owari kan -g -a xztaityozx | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | 終 |
| 制作・著作 | |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | xztaityozx | |_________| ∧∧ || ( ゚д゚)|| / づΦ