有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

cmusphinx试图在有人用JAVA说话时让静止图像“说话”

当我女朋友为twitch说话时,我一直在尝试用狮身人面像(sphinx4)将我的头缠绕起来,以获得一个静态图像来制作动画。电视有点像这个mittenz将军的家伙https://www.youtube.com/watch?v=L2oUE-C2g6Y会说话的猫是我想要模仿的

当我需要将图像引入方程时,我会迷路。我一直以此为例

`package edu.cmu.sphinx.demo.hellowrld;
import edu.cmu.sphinx.frontend.util.Microphone;
import edu.cmu.sphinx.recognizer.Recognizer;
import edu.cmu.sphinx.result.Result;
import edu.cmu.sphinx.util.props.ConfigurationManager;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import models.Tts;

public class Speech {

  public static void main(String[] args) {
    ConfigurationManager cm;

    if (args.length > 0) {
        cm = new ConfigurationManager(args[0]);
    } else {
        ///tmp/helloworld.config.xml
        cm = new ConfigurationManager(Speech.class.getResource("speech.config.xml"));

    }
    Recognizer recognizer = (Recognizer) cm.lookup("recognizer");
    recognizer.allocate();

    Microphone microphone = (Microphone) cm.lookup("microphone");
    if (!microphone.startRecording()) {
        System.out.println("Cannot start microphone.");
        recognizer.deallocate();
        System.exit(1);
    }

    System.out.println("Say: (Hello | call) ( Naam | Baam | Caam | Some  )");

    while (true) {
        System.out.println("Start speaking. Press Ctrl-C to quit.\n");

        Result result = recognizer.recognize();

        if (result != null) {
            String resultText = result.getBestFinalResultNoFiller();
            System.out.println("You said: " + resultText + '\n');

                Tts ts = new Tts();
                try {
                    ts.load();
                    ts.say("Did you said: " + resultText);
                } catch (IOException ex) {

                } 
        } else {
            System.out.println("I can't hear what you said.\n");
        }
    }
  }
}`

任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    Sphinx4不是执行此任务的合适工具。它能实时识别语音,而不是单个声音。你需要一个声音识别器,一个简单的振幅检测器。整体方法应如下所示:

    1. 录制一小段音频,比如100ms
    2. 计算语音的振幅(样本的简单平方和)
    3. 展示适当的图片(张大嘴巴听大声的声音,或闭上嘴默不作声)

    在更高级的形式中,你可以识别元音,并根据这一点调整面部图片。元音可以通过GMM分类器识别。你甚至可以记录多种情绪并实时显示。实时性是一个问题,因为你的识别器需要很短的分析时间,这使得这样的系统设计复杂,这将是一个几个月的项目。你可以找到更详细的描述here