NET 3行のコードでテキスト音声変換機能を実現

NET 3行のコードでテキスト音声変換機能を実現

人工知能の時代には、テキストを音声に変換することは今や人工知能の最も人気のある機能であり、大手企業はこのビジネスを持っており、インターフェースを通じて様々なテキストを音声に変換することができ、さらには本物の人々をシミュレートすることができます。

最后更新 2022/07/25 21:42
翔星 DotNet开发跳槽
预计阅读 4 分钟
分类
.NET
标签
.NET C# AI

人工知能の時代には、テキストから音声への人工知能は今より人気のある機能であり、大手企業はこのビジネスを持っており、音声へのあらゆる種類のインターフェイスを介して行うことができ、さらには本物の人々をシミュレートすることができ、非常に強力で、. NETホームマイクロソフトは実際にこのサービスを持っています。テキストへの言語の要件が高くない場合は、マイクロソフト独自の音声変換ライブラリを使用することができ、実装は非常に簡単で、わずか5行のコード実装が必要です。

ステップの使用

1.環境への準備

新建一个控制台项目,并使用 nuget 工具安装:System.Speech,也可以在本地类库添加安装,如下图 nuget 安装

2、输入如下代码,并添加引用using System.Speech.Synthesis;

static void  Main(string[] args)
{
    // 实例化 SpeechSynthesizer.
    SpeechSynthesizer synth = new SpeechSynthesizer();
    // 配置音频输出.
    synth.SetOutputToDefaultAudioDevice();
    // 字符串转语言.
    synth.Speak("你好!DotNeT开发跳槽");

    Console.WriteLine();
    Console.WriteLine("按任意键退出...");
    Console.ReadKey();
}

読書の成功“Hello! DotNeT开発転职”这里是Console応用,大家可以拿winfrom和wpf実现一下更完整。

拡張事例の例

我们这里拿.NET网站实现一下转语音的功能,需求是输入文本框一句话,用这个System.Speech控件转换成音频,并加载到页面读取。

1、首先新建一个.NET的 web 应用,按上面的例子用nuget引入System.Speech

2、新建一个index.shtml页面,设计一个简单的文本框和查询按钮和一个音频输出控件,代码如下

<form>
  <p>
    Title: <input type="text" asp-for="Speektext" />
    <input type="submit" value="生成语音" />
  </p>
</form>
<audio style="width:350px;height:50px;" id="bofang" controls>
  <source src="@Model.filename" type="audio/mpeg" />
</audio>

3、在Index.cshtml.cs页面新建一个输入文字转换文本属性和文件路径属性,并构造函数注入读取路径中间件。

private readonly IHostingEnvironment _IhostingEnvironment;
[BindProperty(SupportsGet = true)]
//用来输入要转换的文本
public string? Speektext { get; set; }
//用来输出文件路径
public string filename { get; set; }
//注入用来读取存放资源文件的路径
public IndexModel(IHostingEnvironment hostingEnvironment)
{
    _IhostingEnvironment= hostingEnvironment;
}

4、在OnGetAsync方法中编写音频处理逻辑,代码如下:

public async Task OnGetAsync()
{
    string wavname = "test";
    string filePath = _IhostingEnvironment.WebRootPath+ $"\\speech\\{wavname}.wav";
    bool isFile = System.IO.File.Exists(filePath);
    if (isFile)
    {
        // 删除文件
        System.IO.File.Delete(filePath);
    }
    if (string.IsNullOrEmpty(Speektext))
        Speektext = "你好!欢迎关注“dotnet开发跳槽!”";
    if (!string.IsNullOrEmpty(Speektext))
    {
        using (SpeechSynthesizer synth = new SpeechSynthesizer())
        {
            //配置音频文件,设置输出流和文件格式
            synth.SetOutputToWaveFile(filePath, new SpeechAudioFormatInfo(32000, AudioBitsPerSample.Sixteen, AudioChannel.Mono));
            // 创建空的 Prompt 对象,并为添加内容、选择语音、控件语音属性和控件朗读单词的发音提供方法
            PromptBuilder builder = new PromptBuilder();
            builder.AppendText(Speektext);
            //输出文件
            synth.Speak(builder);
        }
        //返回文件路径
        filename =  $"\\speech\\{wavname}.wav";
    }
}

フロントエンドでJSを使用してオーディオコントロールにロードします。

<input type="button" id="aa" value="播放" onclick="bofang()" />
<script type="text/javascript">
  function bofang() {
      var url = "@Model.filename.Replace("\\","\\\\")";
      var audio = document.getElementById('bofang');
              $('#bofang').attr('src',url);
              audio.play();
          }
</script>

テキストボックスを使って内容を入力し音声を読み取ることができますこのコードをラップしてニュースの音声読み上げに変えることができます効果は以下のとおり。

サンプルコードへのリンク:

https://pan.baidu.com/s/1IJadMleVEM3ePHE_KHqRqA?pwd=soiq
提取码:soiq

おわりにまとめ

この記事では、. NETテキスト音声変換の簡単な使用方法を紹介し、独自の方法にカプセル化することができます。この例はWindows環境のみをサポートしており、クロスプラットフォームプロジェクトでは自分で調べることができます。この記事が皆さんの勉強や仕事の参考になれば幸いです。

関連記事:Microsoft公式テクニカルドキュメント

駅長の拡張

参考原文 .NET 3 行代码实现文字转语音功能,站长创建 MAUI Blazor 项目,按照文中步骤,添加 nuget 包,成功实现文字转语音功能,贴下关键代码并附上拍摄的视频:

@page "/"
@using System.Speech.Synthesis

<h1>请输入需要转换的文字,然后点击播放按钮</h1>

<MRow>
    <MCol Cols="12" Md="4">
        <MTextField @bind-Value="_message" Label="待转换文字"></MTextField>
    </MCol>
</MRow>
<MRow>
    <MCol Cols="12" Md="4">
        <MButton Class="mr-4" Color="@(string.IsNullOrEmpty(_message) ? "warning" : "success")" OnClick="PlayWord">播放</MButton>
    </MCol>
</MRow>

@code{

    private string _message;
    private SpeechSynthesizer _synth;

    private void PlayWord()
    {
        if (_synth == null)
        {
            _synth = new SpeechSynthesizer();
            _synth.SetOutputToDefaultAudioDevice();
        }
        _synth.Speak(_message);
    }

}
Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2026/01/05

すべての. NET開発者のための2025年アニュアルレポート

今年は“ごめんなさい、C#は最初の階層から落ちました”同様の記事を見ていないと信じています。. NETエコシステムはどのように、この記事は、AI開発、. NET進化、最新の動向とトレンドの両方の統合をカバーし、2025 年の. NET開発者が最も注意を払うべき技術動向と重要なイベントを整理し、将来の課題と機会を満たすために、誰もがポジショニングを見つけるのに役立ちます。

继续阅读
同分类 / 同标签 2024/11/28

Dotnet9ウェブサイトに新しいAIガジェットが追加され、超強力な創造を可能にします!

継続的な探求と革新の道で、[Dotnet9](https://dotnet9.com)のウェブサイトに新しいAIガジェットがあり、記事のタイトルのURLエイリアスを生成し、記事の内容のAI要約機能をアンロックします。この時点で、私たちは幸せで、あなたとこの結果を共有します!

继续阅读
同分类 / 同标签 2023/11/17

NET 8が正式リリース、C#12の変更

人工知能、クラウドネイティブ、パフォーマンス、ネイティブAOTなど、8は多くの機能強化をもたらしましたが、私はまだC#言語といくつかのフレームワークレベルの変更に最も注意を払っていますが、以下のC#12とフレームワークのより実用的な新機能を紹介します。

继续阅读