C#

テキストを日本語ボイスに変換してくれるしょぼいWindowsソフトを作ったよ。

VS2017のC#で、テキストを日本語ボイスに変換してくれるしょぼいWindowsソフト( 滑舌が悪いけどYOUTUBERしたい人用)を作ったよ。自分はかなり滑舌悪いくてどもるので、YOUTUBER向かないのですがユーチューバーしてみたい願望があったので、Gさんの「Cloud Text-to-Speech API」で適当に作ってみた。ちなみにまだYOUTUBERするかは決めてない!

APIですが月に0~100万文字までは無料枠なので、大量に使わない限り無料枠で収まると思います。これを他の人に提供しようとするとアウトだろうけど・・。
自分だけが使用するのには何とかその範囲内かと思います。

尚、ソースコードを提供します可変してお好みで使ってください。大量のテキストをボイス変換した場合、ビジーになるかもしれません。そこら辺の処理は入れてません。またGさんからダウンロードしたJSONファイルを置いている階層に合わしてください。

参考にしたサイトは下記になります。
https://cloud.google.com/text-to-speech/docs/quickstart-client-libraries?hl=ja#client-libraries-install-csharp

フォームのオブジェクトの配置は下記になります。画像を参照ください。

ソースコードは下記になります。

using System;
using System.IO;
using System.Windows.Forms;
using Google.Cloud.TextToSpeech.V1;

namespace テキストを日本語ボイスする
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if(richTextBox1.Text.Replace("\r", "").Replace("\n", "") == "")
            {
                MessageBox.Show("文字を入力してください");
                return;
            }

            Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "C:\\xxxxx\\xxxxx\\xxxxx\\xxxxx.json", EnvironmentVariableTarget.Process);

            TextToSpeechClient client = TextToSpeechClient.Create();


            SynthesisInput input = new SynthesisInput
            {
                Text = richTextBox1.Text.Replace("\r", "").Replace("\n", "")
            };

            VoiceSelectionParams voice = new VoiceSelectionParams
            {
                LanguageCode = "ja-JP",
                Name = "ja-JP-Wavenet-A",
                SsmlGender = SsmlVoiceGender.Neutral,
            };


            AudioConfig config = new AudioConfig
            {
                AudioEncoding = AudioEncoding.Mp3,
                SpeakingRate = f1(trackBar1.Value),
                Pitch = f2(trackBar2.Value),
                

            };

            var response = client.SynthesizeSpeech(new SynthesizeSpeechRequest
            {
                Input = input,
                Voice = voice,
                AudioConfig = config
            });

            DateTime dt = DateTime.Now;
            string dttimename = dt.ToString("yyyy-MM-dd-HH-mm-ss");
            using (Stream output = File.Create("voice-" + dttimename + ".mp3"))
            {
                response.AudioContent.WriteTo(output);
                Console.WriteLine($"Audio content written to file 'voice - " + dttimename + ".mp3'");              
                MessageBox.Show("生成しました=>>voice - " + dttimename + ".mp3");
                System.Diagnostics.Process.Start(Directory.GetCurrentDirectory());
            }
        }

        private void trackBar1_ValueChanged(object sender, EventArgs e)
        {

            label3.Text = string.Format("{0:0.00}", f1(trackBar1.Value));
        }

        private void trackBar2_ValueChanged(object sender, EventArgs e)
        {
            label4.Text = string.Format("{0:0.00}", f2(trackBar2.Value));
        }

        private double f1(int a) {

            return Convert.ToDouble(a) / 100;
        }
        private double f2(int a)
        {

            return Convert.ToDouble(a) - 20;
        }

    }
}

変換したボイスはこんな感じです!


まったりWEB日誌動画というYOUTUBEチャンネルがあります。

PHP言語の入門解説や旅ログなどなどいろいろな活動をしていきます。
ご視聴及びチャンネル登録お願いします🙏

➡ YOUTUBEチャンネル登録🙏
➡ PHPレッスン動画手引き

関連記事

  1. 雑記

    サブウェイ123の映画レビューです{記憶をたどりながら}。

    サブウェイ123の映画レビューです。この映画、先の展開が読めそうで読…

  2. 雑記

    面接や筆記試験よりも統計を用いるべし!

    面接や筆記試験よりも統計を用いるべし!と思います。何故かわからない…

  3. 雑記

    7つの習慣(人格主義の回復)があまり楽しくないけど『はっ』とする。

    『7つの習慣(人格主義の回復)』があまり楽しくないけど(固い)『はっ…

  4. 雑記

    なぜ僕は「炎上」を恐れないかを読んでみて。著者:イケダハヤト

    なぜ僕は「炎上」を恐れないかを読んでみて{著者:イケダハヤト}思った…

  5. 雑記

    SNS時代に身につけるべき「情報参謀術」とは?を視聴して。

    1時間ほどある動画ですけど聞いて損はないなと思いますし、考えは違え…

プロフィール



taokaと申します。

まったりWEB日誌とまったり映画ログを
更新している中の人です😃

趣味は映画鑑賞とブログ書きです。


ブックマークやシェアして頂けると励みになります。

どうぞよろしくお願い致します。

Twitter でフォロー

PAGE TOP