当前位置: 首页 > news >正文

使用 Python 实现声纹和声音识别并集成到会议记录程序中

要使用 Python 实现声纹和声音识别并集成到会议记录程序中,可以按照以下步骤进行:

1. 安装必要的库

需要安装一些 Python 库,如 SpeechRecognition 用于语音识别,pyAudio 用于音频输入,resemblyzer 用于声纹识别。可以使用以下命令进行安装:

pip install SpeechRecognition pyaudio resemblyzer

2. 实现声纹和声音识别并集成会议记录程序

import speech_recognition as sr
from resemblyzer import preprocess_wav, VoiceEncoder
from pathlib import Path
import numpy as np

# 初始化语音识别器
r = sr.Recognizer()

# 初始化声纹编码器
encoder = VoiceEncoder()

# 存储已知声纹和对应的说话人名称
known_speakers = {}
# 存储会议记录
meeting_records = []

def load_known_speakers(speaker_folder):
    """
    加载已知说话人的声纹
    :param speaker_folder: 存储说话人音频文件的文件夹路径
    """
    speaker_folder = Path(speaker_folder)
    for speaker_dir in speaker_folder.iterdir():
        if speaker_dir.is_dir():
            speaker_name = speaker_dir.name
            wav_files = list(speaker_dir.glob("*.wav"))
            embeddings = []
            for wav_file in wav_files:
                wav = preprocess_wav(wav_file)
                embedding = encoder.embed_utterance(wav)
                embeddings.append(embedding)
            if embeddings:
                known_speakers[speaker_name] = np.mean(embeddings, axis=0)

def recognize_speaker(audio):
    """
    识别说话人
    :param audio: 音频数据
    :return: 说话人名称
    """
    wav = preprocess_wav(audio.get_wav_data())
    embedding = encoder.embed_utterance(wav)
    best_similarity = -1
    best_speaker = None
    for speaker, known_embedding in known_speakers.items():
        similarity = np.dot(embedding, known_embedding)
        if similarity > best_similarity:
            best_similarity = similarity
            best_speaker = speaker
    return best_speaker

def record_meeting():
    """
    记录会议内容
    """
    with sr.Microphone() as source:
        print("开始记录会议,请说话...")
        while True:
            try:
                audio = r.listen(source)
                speaker = recognize_speaker(audio)
                if speaker is None:
                    speaker = "未知说话人"
                text = r.recognize_google(audio, language='zh-CN')
                record = f"{speaker}: {text}"
                meeting_records.append(record)
                print(record)
            except sr.UnknownValueError:
                print("无法识别语音,请重新说话。")
            except sr.RequestError as e:
                print(f"请求错误; {e}")
            except KeyboardInterrupt:
                print("会议记录结束。")
                break

def save_meeting_records(file_path):
    """
    保存会议记录到文件
    :param file_path: 文件路径
    """
    with open(file_path, 'w', encoding='utf-8') as f:
        for record in meeting_records:
            f.write(record + '\n')

if __name__ == "__main__":
    # 加载已知说话人的声纹
    load_known_speakers("known_speakers")
    # 开始记录会议
    record_meeting()
    # 保存会议记录
    save_meeting_records("meeting_records.txt")

3. 代码说明

  1. 加载已知说话人的声纹load_known_speakers 函数用于加载已知说话人的声纹,将每个说话人的音频文件的声纹进行平均,存储在 known_speakers 字典中。
  2. 识别说话人recognize_speaker 函数用于识别当前说话人的身份,通过计算当前音频的声纹与已知声纹的相似度,找出最相似的说话人。
  3. 记录会议内容record_meeting 函数使用麦克风录制音频,调用 recognize_speaker 函数识别说话人,使用 SpeechRecognition 库将音频转换为文本,并将说话人信息和文本记录到 meeting_records 列表中。
  4. 保存会议记录save_meeting_records 函数将 meeting_records 列表中的内容保存到指定的文件中。

4. 注意事项

  • 需要将已知说话人的音频文件存储在 known_speakers 文件夹中,每个说话人的音频文件放在一个单独的子文件夹中,子文件夹的名称即为说话人的名称。
  • 音频文件必须为 .wav 格式。
  • 语音识别使用的是 Google 的语音识别服务,需要确保网络连接正常。

相关文章:

  • 蓝牙的baseProfile和ble模块有什么区别
  • 139.单词拆分
  • 人类驾驶的人脑两种判断模式(反射和预判)-->自动驾驶两种AI模式
  • kubernetes 初学命令
  • 记一次pytorch训练loss异常的问题
  • LinkedList与链表
  • (学习总结26)Linux工具:make/Makefile 自动化构建、Git 版本控制器 和 gdb/cgdb 调试器
  • 鸿蒙-状态管理V2其他方法
  • 评高级工程师职称的条件-三大硬性要求
  • 【时时三省】(C语言基础)数据类型
  • Linux通过设备名称如何定位故障硬盘
  • 应用的负载均衡
  • windbg-记一次应用程序崩溃的定位
  • 【综合项目】api系统——基于Node.js、express、mysql等技术
  • 穷举vs暴搜vs深搜vs回溯vs剪枝(典型算法思想)—— OJ例题算法解析思路
  • 【java进阶】java多态深入探讨
  • C# | GDI+图像测距辅助线的实现思路
  • 企业知识库搭建:14款开源与免费系统选择
  • OpenAI开放Deep Research权限,AI智能体大战升级,DeepSeek与Claude迎来新对决
  • 【质量管理】怎么评估职能部门当前质量管理成熟度
  • 宿州市委副书记任东已任市政府党组书记
  • 经营业绩持续稳中向好,国铁集团2024年度和2025年一季度财务决算公布
  • 200枚篆刻聚焦北京中轴线,“印记”申遗往事
  • 五一去哪儿| 追着花期去旅行,“赏花经济”绽放文旅新活力
  • 市场监管总局:2024年查办商标、专利等领域违法案件4.4万件
  • 辽宁辽阳市白塔区一饭店发生火灾,事故已造成22人遇难3人受伤