java - 如何在 Java 中表示 wav 文件?

标签 java spring spring-boot audio

我需要通过服务 (t = textToSpeechService.callAPI(tmp);) 向 API 发送请求,以便它返回给我一个音频 wav 文件。我遇到的问题是,我不知道应该使用哪些类而不是 Clip (public Clip callAPI(Source src)) 来捕获该文件并将其转发到前端,即前端调用这个服务?我的意思是我不希望文件像在(callAPI 函数)中那样在后端播放,而是以某种方式捕获文件,然后在前端播放、暂停或停止它。如何用 Java 表示音频文件,我很困惑? Javascript 中没有类似 Audio 类的东西吗?

public Clip callAPI(Source src){
    URL url;
    Clip result = null;

    AudioInputStream sound = null;
    {
        try {
            url = new URL(" http://api.voicerss.org/?key=" + keyAPI + "&hl=" + src.getLang() + "&src=" + src.getSrc());

            sound = AudioSystem .getAudioInputStream(url); //here i have the audio
            Object sound2 = AudioSystem.getAudioInputStream(url);
            AudioFormat at = sound.getFormat();
            result = AudioSystem.getClip();
            result.open(sound);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }catch (UnsupportedAudioFileException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();

        }catch (LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    return result;
}

 Clip t = null;
 AudioInputStream ais = null;
 private TextToSpeechService textToSpeechService;
 public Clip theFunction(@RequestParam String src, HttpServletRequest request){
    //if(src == request.getSession().getAttribute("input")){
    Source tmp = new Source();
    tmp.setSrc(src);

    t = textToSpeechService.callAPI(tmp);


    t.start();

    return t;

}

最佳答案

AudioInputStream extends InputStream .理论上,reading音频作为字节流直到 EOF (-1) 并将这些字节写入 HTTP ( servlet ) 响应的输出流中,将音频传输到浏览器;很可能必须首先在响应中设置特定的“内容类型” header ,以表示音频/音频格式的类型,也许还有一些来自 AudioFormat 的附加音频特征。 .

关于java - 如何在 Java 中表示 wav 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59290561/

相关文章:

spring - 由于 Spring Security 登录重定向而丢失 Google Analytics 跟踪

java - 在代码中传递 keycloak 配置参数而不是从 application.properties 中读取

java - Gradle Swagger CodeGen DefaultGenerator CodegenConfigurator 添加 Lombok

java - 如何将 127.0.0.1 重定向到 localhost (Java)?

java - 如何用所需的词而不是冗长的域名来屏蔽 URL?

java - org.springframework.beans.factory.UnsatisfiedDependencyException : Error creating bean with name.无法让我的springboot应用程序运行

java - Spring boot 忽略附加属性文件

java - 如何修复使用参数 E e 实现方法时有关父类(super class)型的错误?

java - 在 spring security login-processing-url (/j_spring_security_check) 之前做过滤 Action

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'signupController' defined in file