如何基于大模型实现一个语音转文字应用

如何基于大模型实现一个语音转文字应用

实现语音转文字功能:从模型加载到实时转录的完整指南

在这篇文章中,我将分享一个基于Whisper模型的语音转文字项目,展示如何使用faster-whisperGradio库构建一个实时转录和处理音频文件的应用。这个项目同时支持多语言的语音转录,甚至可以通过AI对转录结果进行润色。

该项目的主要功能包括

1.实时音频转录:通过麦克风录音并进行实时的语音识别。

2.音频文件上传:支持上传音频文件并进行转录。

3.语言支持:支持多种语言的语音转录。

4.字幕生成:支持生成字幕格式的转录输出。

5.AI润色:调用AI接口对转录后的文本进行错别字修正和句子润色。

下面我将详细介绍项目的各个功能模块及其实现方式。

1. 环境与依赖安装

首先,确保你的环境中安装了以下依赖:

faster-whisper: 语音识别库,提供高效的Whisper模型推理。

gradio: 前端界面库,用于构建Web应用。

zhconv: 中文简繁转换工具。

requestsav等。

安装方法如下:

pip install faster-whisper gradio zhconv av requests

2. 检测CUDA支持

为了提升转录性能,我们首先通过nvidia-smi命令检查CUDA是否可用,如果可用则加载GPU模式的Whisper模型:

def check_cuda_available():
    try:
        result = subprocess.run(['nvidia-smi'], capture_output=True, text=True)
        return result.returncode == 0
    except FileNotFoundError:
        return False

cuda_available = check_cuda_available()
path = "./models/faster-whisper-large-v2"
model = WhisperModel(model_size_or_path=path, device="cuda", compute_type="float16") if cuda_available else WhisperModel(model_size_or_path=path, device="cpu", compute_type="int8"

3. 录音和实时转录

我们使用Gradio的Audio组件来处理实时录音,并通过faster-whisper进行语音识别。以下是录音和转录的实现流程:

  • 录音数据被写入队列。
  • 使用VAD(语音活动检测)进行语音分段。
  • 将音频帧转换为文本。

实时录音与转录的关键代码如下:

def start_recording():
    global recording, total_frames, text_arr
    recording = True
    total_frames = np.array([], dtype=np.float32)
    text_arr = []
    threading.Thread(target=transcribe_process, daemon=True).start()

def transcribe_process():
    global recording
    while recording:
        time.sleep(0.5)
        if not data_queue.empty():
            datas = [data_queue.get() for _ in range(data_queue.qsize())]
            audio_data = resample_audio(np.concatenate(datas), 16000)
            audio_data = audio_data.astype(np.float32) / 32768.0
            total_frames = np.concatenate((total_frames, audio_data))
            speech_chunks = get_speech_timestamps(total_frames, vad_parameters)
            if speech_chunks:
                transcribe_frames = collect_chunks(total_frames, [speech_chunks[0]])
                result = transcribe(transcribe_frames)
                if text_arr: text_arr.pop()
                text_arr.append(result)

4. 多语言与字幕格式支持

该应用支持多种语言的语音识别,你可以在界面中选择转录的语言。为了方便用户理解每个语言选项,我们添加了语言标签:

python
复制代码
language_arr = ["zh", "en", "fr", "es"]  # 示例语言列表
language_label = ["中文", "英语", "法语", "西班牙语"]  # 对应的语言标签

此外,用户可以选择生成字幕格式的转录结果:

python
复制代码
output_type_checkbox = gr.Checkbox(label="字幕格式", value=is_subtitles, interactive=True)

5. AI润色功能

为了提升语音识别的文本质量,我们集成了一个AI润色接口。用户可以通过点击按钮,将转录文本发送到AI模型,进行错别字修正和格式优化:

python
复制代码
def ai_summary(text):
    headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer <token>'}
    data = {
        "messages": [
            {"role": "system", "content": sys_prompt},
            {"role": "user", "content": text}
        ],
        "model": "gpt-4o-mini"
    }
    response = requests.post(ai_srvice, headers=headers, json=data)
    ai_text = ''.join([json.loads(line)["choices"][0]["delta"].get("content", '') for line in response.iter_lines() if line])
    return ai_text

6. 代码中其他关键模块
  • 音频重采样:将录制的音频数据从48kHz重采样到16kHz,以便更好地与语音识别模型兼容。
  • 音频文件转录:用户可以上传音频文件,并通过faster-whisper对文件内容进行转录。
7. 界面与交互

我们使用Gradio构建了一个简洁的用户界面,支持实时转录、文件上传、重新转录以及AI润色功能。主要交互如下:

python
复制代码
with gr.Blocks() as iface:
    gr.Markdown("<h4>GitHub仓库地址(欢迎star、贡献代码):<a href='https://github.com/caiwuu/Voice2Text'>Voice2Text</a>;模型仓库:<a href='https://huggingface.co/Systran'>https://huggingface.co/Systran</a></h4>")
    gr.Markdown(f"<h4>{md_notice}</h4>")
    with gr.Row():
        input_record = gr.Audio(label="实时转录", sources=["microphone"], streaming=True)
        upload_file = gr.File(label="上传音频或者视频")
        with gr.Column():
            beam_size_slider = gr.Slider(2, 10, step=1.0, value=beam_size, info="增加可提高识别率,也会牺牲性能", label="beam_size", interactive=True)
            language_label_selector = gr.Dropdown(language_label, type="index", value=language_value, label="输出语言", interactive=True)
            output_type_checkbox = gr.Checkbox(label="字幕格式", value=is_subtitles, interactive=True, info="实时转录无法使字幕格式")
            beam_size_slider.change(settings_change, inputs=[beam_size_slider, language_label_selector, output_type_checkbox])
            language_label_selector.change(settings_change, inputs=[beam_size_slider, language_label_selector, output_type_checkbox])
            output_type_checkbox.change(settings_change, inputs=[beam_size_slider, language_label_selector, output_type_checkbox])
    
    with gr.Row():
        with gr.Column():
            play_audio = gr.Audio(label="提取音频", type="filepath")

    with gr.Row():
        regen = gr.Button("重新转录", variant="primary")
            
    output_text = gr.Textbox(label="转录结果", interactive=True)            

    summary_button = gr.Button("AI润色", variant="primary")
    prompt_text = gr.Textbox(label="提示词", interactive=True, value=sys_prompt) 
    summary_output = gr.Textbox(label="AI 润色结果", interactive=True)
    summary_button.click(ai_summary, inputs=output_text, outputs=summary_output)

    prompt_text.change(sys_prompt_change, inputs=[prompt_text])
    regen.click(re_transcribe, outputs=output_text)
    upload_file.upload(file_uploaded, inputs=upload_file, outputs=[play_audio, output_text])
    input_record.change(input_audio_change, inputs=input_record)
    input_record.start_recording(start_recording, outputs=output_text)
    input_record.stop_recording(stop_recording, outputs=play_audio)

iface.launch()

8. 总结

本项目实现了一个完整的语音转文字系统,利用了Whisper模型的强大能力并通过Gradio提供了易用的界面。我们还结合了AI进行润色和多语言支持,极大提升了语音识别的效果和易用性。

在这里插入图片描述

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Colab Whisper模型是一种先进的语音文字模型,它基于语音识别技术,利用深度学习算法将语音信号换为文本。 Colab Whisper模型实现步骤如下: 1. 准备数据:首先,需要准备用于训练模型语音数据集。这些语音数据应该包含不同人的不同语音片段,涵盖不同的语言和口音。 2. 数据预处理:接下来,需要对语音数据进行预处理。这包括对语音信号进行采样和分割,去除噪音和不必要的部分,并将其换为模型可处理的格式,例如MFCC特征。 3. 构建模型:使用深度学习框架,如TensorFlow或PyTorch,构建Colab Whisper模型。该模型通常由多个卷积神经网络和循环神经网络层组成,用于提取语音信号的特征并进行序列建模。 4. 训练模型:使用准备好的语音数据集,通过反向传播算法和训练集的迭代,对模型进行训练。在每个迭代步骤中,模型会根据预测输出与实际标签之间的差异调整自身的权重和参数,以提高预测准确性。 5. 模型评估和优化:在每个训练周期结束后,使用验证集和测试集对模型进行评估。评估指标可以包括词错误率(WER)和字符错误率(CER)。通过这些指标,可以确定模型的性能,并对其进行改进。 6. 部署和应用:一旦模型训练完成并通过评估,就可以将其部署到实际应用中。通过输入语音信号,模型将对其进行换,并输出相应的文本结果。 总之,Colab Whisper模型通过深度学习算法实现了从语音文本换。通过准备数据、进行数据预处理、构建模型、训练模型、评估和优化以及部署应用等步骤,可以实现一个高效准确的语音文字系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值