游戏内音乐盒、游戏内实时翻译外国队友语音的实现思路

news2025/1/18 7:02:54

奈何自己不能精通多个语言,在外服游戏的时候经常遇到老外叽里咕噜说一堆话,不知道讲些什么,可能有俄语、法语等,这时候有一个可以在游戏内实时翻译语言的工具就好了。

在本文中,我们将探讨如何提取游戏内的音频、队友的麦克风声音,以及如何将自己处理后的声音通过麦克风播放给队友。这一功能通常可以通过编写一个 Windows 驱动来实现,该驱动模拟一个虚拟音频输出设备。然后,你可以使用 pyaudio 包来录制来自指定输出设备的音频,或者将音频文件传入输入通道进行播放。

1. 录制游戏音频和队友麦克风声音

要录制游戏的音频以及队友麦克风的声音,可以使用以下方法:

import pyaudio
import wave

# 录音参数
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
CHUNK = 1024
WAVE_OUTPUT_FILENAME = "output.wav"

audio = pyaudio.PyAudio()

def start_recording(device_id):
    global recording
    recording = True
    print("开始录音...")

    # 创建音频流
    stream = audio.open(format=FORMAT,
                        channels=CHANNELS,
                        rate=RATE,
                        input=True,
                        input_device_index=device_id,
                        frames_per_buffer=CHUNK)

    frames = []

    while recording:
        data = stream.read(CHUNK)
        frames.append(data)

    # 停止和关闭流
    stream.stop_stream()
    stream.close()

    # 保存录音到文件
    with wave.open(WAVE_OUTPUT_FILENAME, 'wb') as wf:
        wf.setnchannels(CHANNELS)
        wf.setsampwidth(audio.get_sample_size(FORMAT))
        wf.setframerate(RATE)
        wf.writeframes(b''.join(frames))

    print("录音已保存到", WAVE_OUTPUT_FILENAME)

上面的代码能帮助你录制指定输出设备的音频,并保存为文件。你只需指定设备 ID 并调用 start_recording() 函数,即可开始录音。

2. 播放音频文件给队友

同样,你也可以播放音频文件并将其传输给你的队友。以下是一个简单的示例:

def play_audio_file(device_id, filename):
    # 打开音频文件
    wf = wave.open(filename, 'rb')

    # 打开音频流
    stream = audio.open(format=audio.get_format_from_width(wf.getsampwidth()),
                        channels=wf.getnchannels(),
                        rate=wf.getframerate(),
                        output=True,
                        output_device_index=device_id)

    data = wf.readframes(CHUNK)

    while data:
        stream.write(data)
        data = wf.readframes(CHUNK)

    # 停止和关闭流
    stream.stop_stream()
    stream.close()

    # 关闭文件
    wf.close()

这个函数可以将指定的音频文件播放至指定的输出设备。而现实情况下,编写 Windows 驱动来模拟虚拟设备是一个非常复杂的过程,并且需要较高的系统编程能力。

3. 使用 VoiceMeeter Banana 简化音频处理

实际上,编写 Windows 驱动来实现上述功能非常麻烦,幸运的是,我们可以使用 VoiceMeeter Banana 来简化这一过程。VoiceMeeter Banana 是一款功能强大的音频管理软件,它能够创建多个虚拟音频设备,帮助你轻松地实现音频输入和输出的控制。
在这里插入图片描述

3.1 利用 VoiceMeeter Banana 的虚拟设备

打开 VoiceMeeter Banana 后,你会发现系统中多了许多虚拟输入和输出设备。这些虚拟设备可以用于各种复杂的音频处理场景,例如:

  • 监听电脑音频并传递给 AI 模型:你可以将电脑音频输入到 VoiceMeeter 的虚拟输入通道,并将输出传递给 AI 模型进行实时翻译,然后将翻译结果显示在桌面上。
  • 实时录制和处理声音:你可以向麦克风说话,通过 VoiceMeeter 立即捕获你的声音,并将其录制为文件,之后可以将该文件传递给变声或翻译 AI 模型,再通过虚拟设备播放给队友。
  • 播放音乐或语音包给队友:你可以通过 VoiceMeeter 播放预录的音乐或语音包,并通过虚拟设备将音频传递给队友,进行互动或娱乐。

3.2VoiceMeeter Banana 的使用

在这里插入图片描述

可以参考以下详细教程:VoiceMeeter Banana 初学者保姆级详细图解使用教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2059868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity动画模块 之 3D模型导入基础设置 Rig页签

​本文仅作笔记学习和分享,不用做任何商业用途本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ 1.Rig页签 Rig 选项卡 - Unity 手册,rig是设置骨骼与替身系统的,工作流程如下 Avatar是什么…

OpenAI 将向企业开放 GPT-4o 模型定制版

OpenAI 最近发布了一项新功能,使企业客户可以通过微调技术定制 GPT-4o 模型,从而应对日益激烈的人工智能竞争,并展示其投资回报。这一新功能的推出使得企业能够使用自己的数据对 GPT-4o 模型进行个性化调整,以满足他们的特定需求和…

学习设置echarts 折线图使用相关参数的方法整理

学习设置echarts 折线图使用相关参数的方法整理 折线图堆叠设置为不堆叠的方法 折线图堆叠设置为不堆叠的方法 官网是这样的,但是不需要这种堆叠形式的如下图: 第2条数据值 第1条数据值 第2条数据值 第3条数据值 第2条数据值 第3条数据值 需要改成…

通讯专题-RS232

1 概述 RS-232是一种点对点通信协议,这意味着每个数据信号沿一根导线传输(差分信号使用两根导线传输一个数据信号),RS-232为全双工方式运行(总线可同时发送和接收数据)。 根据新修订的标准为容性负载为2500…

Servlet技术介绍与实践

Servlet技术是Java Web开发的核心组件之一,它提供了一种在Web服务器上执行Java代码的机制。自Servlet API首次发布以来,它已成为构建动态Web应用程序的基础。本文将深入探讨Servlet的工作原理、生命周期、关键特性,并通过示例代码展示如何在实…

精通推荐算法28:行为序列建模之DSIN— 基于Session建模用户行为序列

1 行为序列建模总体架构 2 DSIN背景 阿里巴巴研究人员发现,用户行为序列是基于Session的。Session内兴趣相似且集中,Session间则兴趣差异较大。Session按照时间间隔来划分,比如 30分钟。如图5-11所示为真实场景下的多个用户行为Session。 图…

【NI国产替代】NI‑9235四分之一桥应变计,8通道C系列应变/桥输入模块

10 kS/s/ch,120 Ω四分之一桥应变计,8通道C系列应变/桥输入模块 NI‑9235可同步测量所有通道的动态应变,从而实现了高速同步测量。 该功能对于需要在特定时刻对多个通道进行比较的应用(例如冲击测试)非常重要。\n\nNI…

TCP协议段中的六个标志位

目录 ACK SYN RST FIN PSH URG TCP报文格式中的六个标志位由6个比特构成,在通信双方基于TCP协议互相发送报文数据时可以通过报头中标志位来区别对方发送的报文数据的请示。 ACK 确认号是否有效。 接收端对所收到的报文进行检查,若未发现错误&…

在控件graphicsView中实现绘图功能

文章目录 基础夯实:效果展示:一、目标:二、遇到的问题三、实例代码customgraphicsview.hcustomgraphicsview.cppmainwindow.hmainwindow.cppmian.cpp 基础夯实: 在Qt框架中,QGraphicsView 是一个非常强大的控件&#…

读论文《Temporal Graph Networks for Deep Learning on Dynamic Graphs》

论文地址:[2006.10637] Temporal Graph Networks for Deep Learning on Dynamic Graphs (arxiv.org) 项目地址:GitHub - twitter-research/tgn: TGN: Temporal Graph Networks 作者提出了一种名为Temporal Graph Networks(TGNs)…

解决selenium 常见版本不兼容问题

目录 1、解决urllib3库不兼容的问题 2、解决chromedriver与浏览器版本不兼容的问题 【测试环境】 selenium:3.141.0Python:3.10 1、解决urllib3库不兼容的问题 背景:在尝试启动selenium时代码出现ValueError错误,代码如下&am…

Excel的使用总结

目录 1、汇总公式:TEXTJOIN 2、excel中选择某个区域的方法 3、excel中如何在复制的时候,不将公式一起复制过去 4、想要自动填充某个区域的值的方法 1、汇总公式:TEXTJOIN TEXTJOIN 函数 - Microsoft 支持 例:TEXTJOIN("…

下拉表格选择器ReTableSelect组件(API)

组件实现基于 Vue3 + Element Plus + Typescript,同时引用 vueUse + lodash-es + tailwindCss (不影响功能,可忽略) 基于ReTable和Popover组件封装的下拉表格选择器组件,支持本地分页以及远程请求两种方式。 交互与展示尽量的与ElSelect保持一致。 下拉表格选择器ReTableSel…

倍思Eil这款耳机怎么样吗?南卡、倍思、QCY四款开放式耳机无广避坑测评!

近期,我近期,我注意到后台有许多小伙伴向我咨询如何挑选合适的开放式耳机。市场上开放式耳机品牌琳琅满目,它们在音质表现、佩戴舒适度以及综合性能上均展现出各自的差异。对于追求耳朵极致舒适体验的朋友而言,选择一款合适的开放…

Qt5 编译 Qt creator 源码中的 designer 模块

文章目录 下载 Qt Creator 源码 下载 Qt Creator 源码 Github: https://github.com/qt/qttools 笔记打算用 Qt 5.12.12 来编译 qt creator-designer 所以笔者下载的是 tag - 5.12.12 ,解压后如下,先删除多余的文件,后续还要删除更多文件方便…

教程:使用Python裁剪TIF影像为多个自定义大小的小块(分割栅格)

教程:使用Python裁剪TIF影像为多个自定义大小的小块(分割栅格) 随着遥感技术的不断发展,影像数据的处理和分析在地理信息系统(GIS)和遥感领域显得尤为重要。在实际项目中,处理大规模的TIF影像数据往往需要对影像进行裁…

【原创】java+swing+mysql房屋租赁管理系统设计与实现

个人主页:程序员杨工 个人简介:从事软件开发多年,前后端均有涉猎,具有丰富的开发经验 博客内容:全栈开发,分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片,希望和大家…

进程的退出概念

进程退出 缺页中断(补充)页表中的权限位进程退出异常exit 缺页中断(补充) 之前我们了解了页表相关的知识,现在问大家一个问题,用new和malloc开辟内存的时候是虚拟内存还是物理内存呢? 答案是虚…

谷粒商城实战笔记-231-商城业务-认证服务-单点登录简介

文章目录 一,跨域名共享登录1,父子域名共享登录2,跨域名登录 二,单点登录-SSO单点登录的必要性单点登录的原理 三,XXL-SSO,开源的单点登录解决方案 一,跨域名共享登录 1,父子域名共…

OSPF-基础多区域实验

1.ENSP下载 阿里云盘分享 ⭐/*无需密钥 免费下载 安装不成功,可关注并私信博主*/ 2.OSPF的基础需求和规则 实验规则: 1.接口地址→XY.XY.XY.R /24 X:两者之间最小的 Y:两者之间最大的 R:谁的接口就是谁的编号 以R1和R2之间的连接为例&#xff0…