当前位置: 首页 > 知识库问答 >
问题:

如何表示wav文件在Java?

艾敏学
2023-03-14

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

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;

}

共有1个答案

司寇经亘
2023-03-14

AudioInputStream扩展了InputStream。理论上,将音频作为字节流读取到EOF(-1)并将这些字节写入HTTP(servlet)响应的输出流将音频传输到浏览器;很可能必须首先在响应上设置特定的“内容类型”标头,以表示音频/音频格式的类型,以及AudioFormat的一些额外音频特征。

 类似资料:
  • 问题内容: 我有一个几分钟的.wav文件,我想分割成10秒的另一个.wav文件。 到目前为止,这是我的python代码: 印刷产量: 我知道这是框架列表。我如何为该列表中的每个元素制作一个wav文件(第一个.wav文件将是?Python的模块尚不清楚如何使用框架创建.wav文件。 编辑:这是一个重复的问题,如何在python中将音频文件(wav格式)拼接为1秒拼接? 但是,如果某人的答案不需要,我

  • 问题内容: 我尝试pygame播放wav文件,如下所示: 但是它改变了声音,我不知道为什么!我阅读了此链接解决方案,但无法解决播放wave文件的问题! 对于此解决方案,我不知道应该导入什么? 对于这个解决方案/ dev / dsp在新版本的linux中不存在: 而当我尝试pyglet它给我这个错误: 问题答案: 您可以使用PyAudio。我的Linux上的一个示例可以正常工作:

  • 问题内容: 我正在尝试使用Java播放* .wav文件。我希望它执行以下操作: 按下按钮时,播放一声短促的哔声。 我已经用谷歌搜索了,但是大多数代码都没有用。有人可以给我一个简单的代码片段来播放.wav文件吗? 问题答案: 没有Java反射的解决方案 , ) Java反射会降低性能。跑步:

  • 问题内容: 如何使用Java合并两个WAV文件? 我试过了,但是没有正常工作,他们还有其他方法吗? 问题答案: 如果直接使用wav文件的字节,则可以在任何编程语言中使用相同的策略。对于此示例,我将假设两个源文件具有相同的比特率/数字通道,并且具有相同的长度/大小。(否则,您可能可以在开始合并之前对其进行编辑)。 首先看一下WAV规范,我在斯坦福课程网站上找到了一个很好的人: 常见的标头长度为44或

  • 问题内容: 我想编写一个Java程序将wav文件拆分为多个通道。输入将是一个wav文件,而输出将是与通道数量一样多的wav文件。我可以用Java读取wav文件,但是如何将其拆分为通道? 问题答案: 找到了一种非常简单的方法,但不确定它的计算效率如何… 这适用于16位wav PCM,其中立体声阵列中的0和1索引是左声道,而2&3是右声道(均为8位单声道)。

  • 我有一些代码(在WPF应用程序中),当一些文本被复制到剪贴板时,它将使用SpeechSynthesizer读出文本(我所有的代码都在这篇文章的底部)。 然而,以这种方式播放音频不允许我暂停、倒带或播放等。 所以我想我应该使用SpeechSynthesis来保存一个wav文件。然后使用MediaPlayer类,因为它很容易暂停、播放等。 但是,保存文件后,该文件不会在我的媒体播放器中播放。这个文件很