构建一个语音转文字的WebApi服务

简介: 构建一个语音转文字的WebApi服务

构建一个语音转文字的WebApi服务

简介

由于业务需要,我们需要提供一个语音输入功能,以便更方便用户的使用,所以我们需要提供语音转文本的功能,下面我们将讲解使用Whisper将语音转换文本,并且封装成WebApi提供web服务给前端调用。

创建项目

  1. 第一步打开Vscode,选择一个目录作为工作空间,然后打开控制台,输入以下指令创建一个WebApi的项目:
dotnet new webapi -n Whisper --no-openapi=true
  1. 添加依赖包的引用:
    1. Whisper.netWhisper.cpp的.NET封装
    2. Whisper.net.Runtime.Clblast则是使用GPU的包,当然也可以不使用GPU
<PackageReference Include="Whisper.net" Version="1.5.0" />
<PackageReference Include="Whisper.net.Runtime.Clblast" Version="1.5.0" />
  1. 下载一个模型:https://huggingface.co/ggerganov/whisper.cpp/tree/main ,找到ggml-base-q5_1.bin下载,请注意的是带en的是只识别英文的。其他的是全语言。

  2. 下载一个语音示例文件 https://github.com/sandrohanea/whisper.net/blob/main/examples/TestData/kennedy.wav


    <ItemGroup>
      <None Update="ggml-base-q5_1.bin">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </None>
      <None Update="kennedy.wav">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </None>
    </ItemGroup>

实现基本使用案例

将俩个文件复制到部署目录

创建WhisperService.cs并且读取音频文件然后返回识别结果

public class WhisperService
{
   
   
    /// <summary>
    /// 音频转文字
    /// </summary>
    /// <param name="processor">注入的对象</param>
    /// <returns></returns>
    public static async Task<string> SpeechRecognitionAsync(WhisperProcessor processor)
    {
   
   
        var sw = Stopwatch.StartNew();
        var wavFileName = "kennedy.wav";
        await using var fileStream = File.OpenRead(wavFileName);

        var str = string.Empty;
        await foreach (var result in processor.ProcessAsync(fileStream))
        {
   
   
            Console.WriteLine($"{result.Start}->{result.End}: {result.Text}");
            str += result.Text;
        }
        sw.Stop();
        Console.WriteLine($"翻译耗时:{sw.ElapsedMilliseconds}ms 翻译结果:{str} 文件大小:{fileStream.Length}");
        return str;
    }

}

修改Program.cs

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// 注册单例的WhisperFactory,并且使用ggml-base-q5_1.bin模型
builder.Services.AddSingleton<WhisperFactory>((services) => WhisperFactory.FromPath("ggml-base-q5_1.bin"));
builder.Services.AddSingleton((services)=>
{
   
   
    // 从构建的服务中获取WhisperFactory
    var whisperFactory = services.GetRequiredService<WhisperFactory>();
    return whisperFactory.CreateBuilder()
        .WithLanguage("auto") // 自动识别语言
        .Build();
});

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
   
   
    app.UseSwagger();
    app.UseSwaggerUI();
}

// 使用MiniApis构建一个简单的API,使用WhisperService.SpeechRecognitionAsync方法
app.MapGet("/whisper/speech-recognition", WhisperService.SpeechRecognitionAsync)
    .WithName("whisper")
    .WithOpenApi()
    .WithDescription("识别语音文件");

await app.RunAsync();

服务构建完成,下面运行体验效果:

在控制台输入:

cd .\Whisper\
dotent run
  • 显卡:1050Ti

  • 耗时:3385ms

image.png

  • 显卡:4080
  • 耗时:800ms
    image.png

总结:

在本次会议中,讨论了构建一个语音转文字的WebApi服务的流程和步骤。主要内容包括创建项目、添加依赖包的引用、下载模型和语音示例文件、实现基本使用案例以及服务构建完成后的运行体验。

行动项目:

  • 下载并添加依赖包Whisper.netWhisper.net.Runtime.Clblast
  • 下载模型ggml-base-q5_1.bin和语音示例文件kennedy.wav,并将其复制到部署目录。
  • 创建WhisperService.cs,实现音频转文字的功能。
  • 修改Program.cs,注册WhisperFactory并构建API,使用WhisperService.SpeechRecognitionAsync方法。
  • 运行服务,测试效果。

分享

技术交流群:737776595

相关实践学习
一键创建和部署高分电影推荐语音技能
本场景使用天猫精灵技能应用平台提供的技能模板,在2-5分钟内,创建一个好玩的高分电影推荐技能,使用模板后无须代码开发,系统自动配置意图、实体等,新手0基础也可体验创建技能的乐趣。
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
目录
相关文章
|
9月前
|
达摩院 Java 大数据
达摩院FunASR实时语音转写服务软件包发布
达摩院FunASR实时语音转写服务软件包发布
637 0
达摩院FunASR实时语音转写服务软件包发布
|
语音技术
阿里云语音识别服务提供了三个版本的录音文件识别
阿里云语音识别服务提供了三个版本的录音文件识别
410 1
|
自然语言处理 监控 BI
智能语音交互控制台项目服务用量查看Quick Start
智能语音交互(Intelligent Speech Interaction)是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互功能。适用于智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等场景,在金融、司法、电商等多个领域均有应用。目前云上的许多企业客户在使用该服务后,往往有想查看具体某个项目的消费账单等需求。这一需求,目前是无法直接查看到的。但是在控制台监控统计功能页可以分项目查看调用量。再结合费用中的账单明细能计算下具体的消费。本文以12月的项目调用为例,为您介绍如何查看监控报表页面项目用量详情。
183 0
智能语音交互控制台项目服务用量查看Quick Start
|
自然语言处理 人机交互 语音技术
阿里云智能语音交互中一句话识别服务的PythonSDK调用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,一句话识别服务可以对一分钟内的短语音进行识别,适用于对话聊天,控制口令等较短的语音识别场景,此篇文章将介绍此服务的pythonSDK简单使用
633 0
阿里云智能语音交互中一句话识别服务的PythonSDK调用
|
自然语言处理 人机交互 语音技术
阿里云智能语音交互中录音文件识别服务的简单使用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,识别是针对已经录制完成的录音文件,进行离线识别的服务。录音文件识别是非实时的,识别的文件需要提交基于HTTP可访问的URL地址,不支持提交本地文件。此篇文章简单介绍下javasdk的调用
861 0
阿里云智能语音交互中录音文件识别服务的简单使用
|
自然语言处理 人机交互 API
阿里云智能语音交互中长文本语音合成服务的restful api 中python3调用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,长文本语音合成功能提供了将超长文本(如千字或者万字)合成为语音二进制数据的功能,此篇文章简单介绍基于python的简单调用
982 0
阿里云智能语音交互中长文本语音合成服务的restful api 中python3调用
|
自然语言处理 视频直播 人机交互
阿里云智能语音交互中实时识别服务的简单使用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,实时识别服务对长时间的语音数据流进行识别,适用于会议演讲、视频直播等长时间不间断识别的场景,此篇文章将介绍此服务的简单使用
1342 0
阿里云智能语音交互中实时识别服务的简单使用
|
自然语言处理 Java 人机交互
阿里云智能语音交互中一句话识别服务的简单使用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,一句话识别服务可以对一分钟内的短语音进行识别,适用于对话聊天,控制口令等较短的语音识别场景,此篇文章将介绍此服务的简单使用
1021 0
阿里云智能语音交互中一句话识别服务的简单使用
|
自然语言处理 Java 人机交互
阿里云智能语音交互--实时语音识别服务Java SDK Quick Start
智能语音交互(Intelligent Speech Interaction)是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互功能。适用于智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等场景,在金融、司法、电商等多个领域均有应用。实时语音识别服务可对不限时长的音频流做实时识别,达到“边说边出文字”的效果,内置智能断句,可提供每句话开始结束时间。可用于视频实时直播字幕、实时会议记录、实时法庭庭审记录、智能语音助手等场景。本文将使用Java SDK演示实时语音识别服务的快速调用以供参考。
673 0
|
JSON 自然语言处理 测试技术
使用科大讯飞语音转文字的服务进行电话录音分析
使用科大讯飞语音转文字的服务进行电话录音分析
使用科大讯飞语音转文字的服务进行电话录音分析

热门文章

最新文章