<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>音声合成 on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/%E9%9F%B3%E5%A3%B0%E5%90%88%E6%88%90/</link>
		<description>Recent content in 音声合成 on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Fri, 05 Aug 2022 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/%E9%9F%B3%E5%A3%B0%E5%90%88%E6%88%90/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Phonetic Bad Word Filter - 読むと不適切に聴こえる文章をフィルタしてくれるAPI</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/08/phonetic-bad-word-filter/</link>
				<pubDate>Fri, 05 Aug 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/08/phonetic-bad-word-filter/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://rapidapi.com/mike.nichols/api/phonetic-bad-word-filter/&#34;&gt;Phonetic Bad Word Filter API&lt;/a&gt; は、字面では一見問題なさそうに見えるが、声に出して読み上げるとヤバイ単語に聴こえてしまう文章や、スペルをわざと間違えることでテキスト合致によるフィルタをすり抜けようとする侮辱語などを発見してブロックするための API です。&lt;/p&gt;&#xA;&lt;p&gt;API は &lt;a href=&#34;https://rapidapi.com/hub&#34;&gt;RapidAPI&lt;/a&gt; のサービスで提供されていて、無料枠の利用でもクレジットカードの登録が必要です。&lt;/p&gt;&#xA;&lt;p&gt;APIの呼び出しサンプルでは、実際のヘイトな単語を使うわけにはいかないので &amp;ldquo;car&amp;rdquo; という単語がまずい単語だと見立てて、&amp;ldquo;kar&amp;rdquo; という似たような発音になる綴りで置き換えても&amp;quot;car&amp;quot;を検知できますよ、というものになっています。&lt;/p&gt;&#xA;&lt;p&gt;実際にはここに、いわゆるNワードなどを検知するように指定するということですね。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/r8nrBy5cSVE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;h3 id=&#34;apiの使い道&#34;&gt;APIの使い道&lt;/h3&gt;&#xA;&lt;p&gt;APIの作者はもともと、Talking Banana(話すバナナ)というアイデアで、バナナの形の人形に YouTube や Twitch での中継中に視聴者のコメントを自動読み上げさせていたようです。&lt;/p&gt;&#xA;&lt;p&gt;しかし、入力した結果が大勢の人に見られているライブ動画ですぐ読み上げられるとなると、出てくるのがイタズラ。特に侮辱後や人種差別にあたる言葉をわざと打ち込むというイタズラが登場してしまいました。&lt;/p&gt;&#xA;&lt;p&gt;ヘイトスピーチにあたるような単語をブラックリスト登録することで、元の文に問題のある単語が直接含まれている場合は読み上げがされないよう対処できたのですが、イタズラする方に「機械に喋らせたら、問題のある単語に聴こえるような別の単語の組み合わせ」を入れてくる人が現れたんだそう。&lt;/p&gt;&#xA;&lt;p&gt;単語一つだけでも、機械に合成させたら禁止ワードに聴こえる組み合わせをリスト化するのは大変そうです。さらに、単語単位での置き換えではなく、ひとつながりの複数の単語の並びの中に、喋ってみたら禁止ワードが聴こえてしまう、というようなものについて、事前にブロックリストを作るのはかなり難しいことでしょう。&lt;/p&gt;&#xA;&lt;p&gt;喋らせてみたらまずいかも、という入力を実際に合成させた音をチェックさせるというアイデア、誤検出もありそうには思いますが前記のような用途であれば、ファンの入れた単語が間違って読み上げられなくてもそこまで大きな問題ではないのでしょう。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/bJ5ppf0po3k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;ユーザー入力をそのまま使うサービスというのは攻撃の対象になりやすいもので、できれば作らない方が楽だとは思います。しかし参加者のフィードバックが表示されることの価値も多いんでしょうね。今回の話は、技術と工夫で一旦はイタズラに勝った、という話で、いつもこういう勝ち筋があるといいのですが。&lt;/p&gt;</description>
			</item>
			<item>
				<title>WordPressに喋らせる Amazon Polly プラグイン。読み上げ podcast 開設まで</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/02/amazon-polly-official-plugin-let-wordpress-speak/</link>
				<pubDate>Fri, 09 Feb 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/02/amazon-polly-official-plugin-let-wordpress-speak/</guid>
				<description>&lt;p&gt;[更新 2019-02] この記事のためだけにプラグインを入れておくのを止めて、プラグインは無効にします。また、プラグイン名は Amazon Polly から Amazon AI に変更されていたようです。&lt;/p&gt;&#xA;&lt;p&gt;Amazon 自身が&lt;a href=&#34;https://ja.wordpress.org/plugins/amazon-polly/&#34;&gt;音声合成サービス Amazon Polly のワードプレス用プラグイン Amazon Polly&lt;/a&gt; を&lt;a href=&#34;https://aws.amazon.com/jp/blogs/aws/give-your-wordpress-blog-a-voice-with-our-new-amazon-polly-plugin/&#34;&gt;公開した&lt;/a&gt;ので、早速入れてみました。&lt;/p&gt;&#xA;&lt;h3 id=&#34;インストールと設定&#34;&gt;インストールと設定&lt;/h3&gt;&#xA;&lt;p&gt;WordPress のプラグインディレクトリから選んでインストールすると、「設定」メニューに Amazon Polly が出てきます。&lt;/p&gt;&#xA;&lt;p&gt;必要な権限を持たせたAWSのアカウントを用意して、以下の二つを設定。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;AWS access key&lt;/li&gt;&#xA;&lt;li&gt;AWS secret key&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;また、Voice Name で言語や話者を選べるので、日本語の女性 Mizuki か男性 Takumi を選んでおきます。&lt;/p&gt;&#xA;&lt;p&gt;Cloud storage の項目では、合成された音声をローカルではなくAmazon S3に置く指定も可能です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2018/02/amazon-polly-official-plugin-let-wordpress-speak/wordpress-amazon-polly-plugin-admin-page.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2018/02/amazon-polly-official-plugin-let-wordpress-speak/wordpress-amazon-polly-plugin-admin-page_hu_61476487b31a015.webp 480w, https://labs.cybozu.co.jp/blog/akky/2018/02/amazon-polly-official-plugin-let-wordpress-speak/wordpress-amazon-polly-plugin-admin-page_hu_177cb402f59c0aec.webp 613w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2018/02/amazon-polly-official-plugin-let-wordpress-speak/wordpress-amazon-polly-plugin-admin-page.png&#34; width=&#34;613&#34; height=&#34;443&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;音声対応の記事を書く&#34;&gt;音声対応の記事を書く&lt;/h3&gt;&#xA;&lt;p&gt;これで新規にブログ記事を書こうとすると、投稿画面に&amp;quot;Enable Amazon Polly&amp;quot;というチェックボックスが出てくるので、喋らせたい記事にチェックを入れます。チェックすると「今回の変換にいくら掛かるか?」を確認するボタンまで出してくれるのは、有料APIだけに安心感があります。&lt;/p&gt;&#xA;&lt;p&gt;あとは通常と同様に公開するだけ。&lt;/p&gt;&#xA;&lt;p&gt;記事の先頭(プラグインの設定により末尾に出したり、表示しないことも可能)に、上のように音声再生のウィジェットが表示されました。聴いてみるとかなり良い感じで合成されていますね。&lt;/p&gt;&#xA;&lt;p&gt;Autoplay という設定で、記事を開くと自動的に喋り始めるようにもできますが、これをオンにするのは読者には煩わしいのではないかと思います。&lt;/p&gt;&#xA;&lt;h3 id=&#34;自動podcastも&#34;&gt;自動podcastも&lt;/h3&gt;&#xA;&lt;p&gt;管理画面の案内から、ブログの podcast feed が自動で生成されていることもわかります。&lt;/p&gt;&#xA;&lt;p&gt;このブログの場合は&lt;a href=&#34;http://developer.cybozu.co.jp/akky/feed/amazon-pollycast/&#34;&gt;このURLで&lt;/a&gt;、生成された音声記事が podcast として公開されているということです。さらに iTunes で公開する Podcast Connect へ案内までしてくれるので、Apple ID/Store Account を持っていればそのまま iTunes で公開までしてしまいそうです。&lt;/p&gt;</description>
			</item>
			<item>
				<title>ツイートすると山が喋ってくれる Mountains of Mouthness</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/</link>
				<pubDate>Wed, 06 May 2015 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/</guid>
				<description>&lt;p&gt;スウェーデンのデザイナー &lt;a href=&#34;http://www.herrpotemkin.com/&#34;&gt;Magnus Östergren さん&lt;/a&gt;が作った、2つの3D CGで描かれた山が世界中からのツイートを音声合成で話すというインタラクティブ実験が、&lt;a href=&#34;http://www.mountainsofmouthness.com/&#34;&gt;The Mountains of Mouthness&lt;/a&gt; です。&lt;/p&gt;&#xA;&lt;p&gt;ハッシュタグ #bad を含むツイッターのつぶやきを探してきて、それを仮想空間に描かれた、口のついた山が喋る、というサービス。スマートフォンやタブレットのブラウザで開くと、デバイスの向きにあわせて視点が動きます。&lt;a href=&#34;https://www.amazon.co.jp/gp/product/B00LJ2J0O0/&#34;&gt;ハコスコ&lt;/a&gt;とかあると没入感も出るでしょう。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/mountains-of-mouthness-e1430929423825.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/mountains-of-mouthness-e1430929423825_hu_b617b66c02d7f1ad.webp 480w, https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/mountains-of-mouthness-e1430929423825_hu_b540833ce40b4d20.webp 768w, https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/mountains-of-mouthness-e1430929423825_hu_bf4e7b7d791fcd7b.webp 1920w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/mountains-of-mouthness-e1430929423825.png&#34; width=&#34;1920&#34; height=&#34;1080&#34; alt=&#34;mountains-of-mouthness&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;ハッシュタグ #bad ではなく、 @MoMouthness へのリプライやハッシュタグ #mouthness で直接確実に(とは言っても今のように混んでると全部拾ってるのかわかりませんが)喋らせることができます。&lt;/p&gt;&#xA;&lt;p&gt;現在、&lt;a href=&#34;https://twitter.com/search?f=realtime&amp;amp;q=%23mouthness&amp;amp;src=typd&#34;&gt;ハッシュタグ #mouthness で検索するといろんなユーザーのツイートが大量に流れているのがわかります&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/twitter-search-mouthness.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/twitter-search-mouthness_hu_e5ce0319b83b21f7.webp 480w, https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/twitter-search-mouthness_hu_6e16fd6697c128a6.webp 642w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2015/05/mountains-of-mouthness/twitter-search-mouthness.png&#34; width=&#34;642&#34; height=&#34;593&#34; alt=&#34;twitter-search-mouthness&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;こちらはデモ動画。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/4y1InlfWu0g?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;ユーザーが指定した個別の情報から、CGと音声合成でこういったアニメーションをリアルタイムで作ってみせる、というコンテンツは、これから増えて行きそうですね。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;http://www.herrpotemkin.com/the-mountains-of-mouthness/&#34;&gt;Potemkin&lt;/a&gt; via &lt;a href=&#34;http://thedailywh.at/2015/05/procrastination-day-two-virtual-mountains-will-shout-tweets-world/&#34;&gt;The Daily What&lt;/a&gt;&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
