尖叫

尖叫

一个Minecraft语音转文本库;检测你的玩家在说什么!

基础库

Shriek

由 Volcano Bay Studios 的 VoiceLib 维护的版本

需要 Architectury API

一个语音转文字的库,可以监听你的麦克风并理解你所说的内容!借助 Vosk 的力量,你可以对着麦克风说话并得到输出,甚至支持多种语言!

集成方式

repositories {
    maven {
        name = "Modrinth"
        url = "https://api.modrinth.com/maven"
    }
}

dependencies {
    modImplementation "maven.modrinth:shriek:1.1.01+fabric"
}

使用方法

ShriekApi 是用于 API 的类。 以下是你将要使用的相关方法:

import com.pryzmm.client.event.EventHandler;
EventHandler.setModel();
// 这将设置语言模型,定义于 https://alphacephei.com/vosk/models
// 语言模型大小各异;默认的是 vosk-model-small-en-us-0.15,压缩后约 40 MB,而其他如 vosk-model-ru-0.10 压缩后约 2.5GB。
// 更换模型可能需要重新启动以进行下载,或使用 EventHandler.getOrCreatePath() 方法进行调用。

ShriekApi.registerServerPlayerSpeechListener(Consumer<ServerPlayerTalkEvent> consumer)
// 此方法注册一个 ServerPlayerTalkEvent 的 Consumer。每当玩家说话时,
// 此事件将会被触发。ServerPlayerTalkEvent 提供了玩家对象,以及他们所说的字符串内容。

ShriekApi.registerClientSpeechListener(Consumer<ClientTalkEvent> consumer)
// 此方法注册一个 ClientTalkEvent 的 Consumer。此方法仅在客户端触发。
// 每当用户说话时,此事件将会被触发。

ShriekApi.setPrintToChat(boolean printToChat)
// 此方法仅在客户端生效。设置是否将
// 客户端语音事件打印到聊天栏。(默认为 False)

ShriekApi.setPrintToConsole(boolean printToConsole)
// 与 printToChat 类似,但输出到控制台。(默认为 False)

示例

此方法使得服务器上任何玩家如果说出 "ouch",就会被点燃:

ShriekApi.registerServerPlayerSpeechListener((serverPlayerTalkEvent -> {
    if (serverPlayerTalkEvent.getText().contains("ouch"))
        serverPlayerTalkEvent.getPlayer().igniteForSeconds(2);
}));

你也可以通过 GitHub 在 ShriekExample 中看到此示例。

安全说明

关于此模组有几点需要注意:

  • 此模组在首次启动时会自动从互联网下载一个 vosk 模型。默认模型压缩后约为 40MB,在设置模型时可能会导致你的游戏卡顿几秒钟。
  • 此模组默认会持续录音并将所有文本数据发送到服务器。这意味着如果服务器端修改已配置完毕,它们可以监听你的对话。请对此保持警惕。
  • 按住静音键会关闭你的麦克风。
  • 其他模组具有切换录音开/关的功能。