返回顶部
首页 > 资讯 > 精选 >怎么在java中调用本地扬声器
  • 132
分享到

怎么在java中调用本地扬声器

2023-06-15 01:06:32 132人浏览 八月长安
摘要

怎么在java中调用本地扬声器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.首先,我们需要一个dll作为辅助。这里解释一下dll的含义(DLL(Dynamic Link

怎么在java中调用本地扬声器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.首先,我们需要一个dll作为辅助。这里解释一下dll的含义(DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用百程序拓展”,是软件文件类型。在windows中,许多应用程序并不是一个度完整的可执行文件,它们被分割成一些相知对独立的动态链接库,即DLL文件,放置于道系统中。当我们执行某一个程序时,相应的版DLL文件就会被调用。一个应用程序可使用权多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件)。

需要把jacob-1.17-M2-x64.dll复制到C:\Windows\System32\目录下。我们也能看到目录下有很多的.dll文件。

这里的文件大家自己百度下,很好找的。

使用Maven项目导入坐标。

<!-- https://mvnrepository.com/artifact/net.sf.jacob-project/jacob --><dependency><groupId>net.sf.jacob-project</groupId><artifactId>jacob</artifactId><version>1.14.3</version></dependency>

测试类代码。

public class Jacobtest {    public static void main(String[] args) {        textToSpeech("工作人员请注意,桌号8001顾客正在寻求帮助!!");    }        public static void textToSpeech(String text) {        ActiveXComponent ax = null;        try {            ax = new ActiveXComponent("Sapi.SpVoice");            // 运行时输出语音内容            Dispatch spVoice = ax.getObject();            // 音量 0-100            ax.setProperty("Volume", new Variant(100));            // 语音朗读速度 -10 到 +10            ax.setProperty("Rate", new Variant(0));            // 执行朗读            Dispatch.call(spVoice, "Speak", new Variant(text));                       spVoice.safeRelease();            ax.safeRelease();        } catch (Exception e) {            e.printStackTrace();        }    }}

从测试类可以看出,这个方法既可以发声还能输出后缀为.wav的文件,这是一个标准的多媒体文件。上述代码注释很清晰,就不解释了,自己看哈。

测试成功,现在集成到自己的项目中。

另述

这里说到了调用扬声器发声,不放还可以想一下如何调用麦克风收音。

public class EngineeCore {    String filePath = "E:\\voice\\voice_cache.wav";    AudioFORMat audioFormat;    TargetDataLine targetDataLine;    boolean flag = true;    private void stopRecognize() {        flag = false;        targetDataLine.stop();        targetDataLine.close();    }    private AudioFormat getAudioFormat() {        float sampleRate = 16000;        // 8000,11025,16000,22050,44100        int sampleSizeInBits = 16;        // 8,16        int channels = 1;        // 1,2        boolean signed = true;        // true,false        boolean bigEndian = false;        // true,false        return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);    }// end getAudioFormat    private void startRecognize() {        try {            // 获得指定的音频格式            audioFormat = getAudioFormat();            DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class, audioFormat);            targetDataLine = (TargetDataLine) AudiOSystem.getLine(dataLineInfo);            // Create a thread to capture the microphone            // data into an audio file and start the            // thread running. It will run until the            // Stop button is clicked. This method            // will return after starting the thread.            flag = true;            new CaptureThread().start();        } catch (Exception e) {            e.printStackTrace();        } // end catch    }// end captureAudio method    class CaptureThread extends Thread {        public void run() {            AudioFileFormat.Type fileType = null;            File audioFile = new File(filePath);            fileType = AudioFileFormat.Type.WAVE;            //声音录入的权值            int weight = 2;            //判断是否停止的计数            int downSum = 0;            ByteArrayInputStream bais = null;            ByteArrayOutputStream baos = new ByteArrayOutputStream();            AudioInputStream ais = null;            try {                targetDataLine.open(audioFormat);                targetDataLine.start();                byte[] fragment = new byte[1024];                ais = new AudioInputStream(targetDataLine);                while (flag) {                    targetDataLine.read(fragment, 0, fragment.length);                    //当数组末位大于weight时开始存储字节(有声音传入),一旦开始不再需要判断末位                    if (Math.abs(fragment[fragment.length-1]) > weight || baos.size() > 0) {                        baos.write(fragment);                        System.out.println("守卫:"+fragment[0]+",末尾:"+fragment[fragment.length-1]+",lenght"+fragment.length);                        //判断语音是否停止                        if(Math.abs(fragment[fragment.length-1])<=weight){                            downSum++;                        }else{                            System.out.println("重置奇数");                            downSum=0;                        }               //计数超过20说明此段时间没有声音传入(值也可更改)                        if(downSum>20){                            System.out.println("停止录入");                            break;                        }                    }                }                //取得录音输入流                audioFormat = getAudioFormat();                byte audioData[] = baos.toByteArray();                bais = new ByteArrayInputStream(audioData);                ais = new AudioInputStream(bais, audioFormat, audioData.length / audioFormat.getFrameSize());                //定义最终保存的文件名                System.out.println("开始生成语音文件");                AudioSystem.write(ais, AudioFileFormat.Type.WAVE, audioFile);                downSum = 0;                stopRecognize();            } catch (Exception e) {                e.printStackTrace();            } finally {                //关闭流                try {                    ais.close();                    bais.close();                    baos.reset();                } catch (IOException e) {                    e.printStackTrace();                }            }        }// end run    }// end inner class CaptureThread

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序、WEB应用程序、分布式系统和嵌入式系统应用程序。

关于怎么在java中调用本地扬声器问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: 怎么在java中调用本地扬声器

本文链接: https://lsjlt.com/news/276796.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在java中调用本地扬声器
    怎么在java中调用本地扬声器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.首先,我们需要一个dll作为辅助。这里解释一下dll的含义(DLL(Dynamic Link...
    99+
    2023-06-15
  • java 调用本地扬声器的步骤
    目录实现方式另述更新实现方式 接下来就对这个小功能进行分析和实现。先写一个Demo。 1.首先,我们需要一个dll作为辅助。这里解释一下dll的含义(DLL(Dynamic Lin...
    99+
    2024-04-02
  • 怎么在Java中调用C/C++本地库
    本篇内容介绍了“怎么在Java中调用C/C++本地库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!编写Java类我们来编写一个Sample1...
    99+
    2023-06-17
  • windows扬声器被禁用了怎么办
    扬声器是一种把电信号转变为声信号的换能器件,我们在电脑上面听歌或者网络视频节目的时候,都会用到扬声器,但是有用户不小心扬声器禁用了,导致电脑没有声音,那么要怎么重新启用呢?来看看下文介绍吧。 方法/步骤 右键点击扬声器图...
    99+
    2023-05-20
    windows 扬声器
  • 在java中调用python脚本
    在java中调用python脚本 推荐使用第三种方法,因为只有第三种方法使用Runtime.getRuntime()才能执行含有第三方库(numpy,matlab,pandas等库)的python脚本...
    99+
    2023-09-07
    python java numpy
  • 怎么在java中调用super
    怎么在java中调用super?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发...
    99+
    2023-06-14
  • 云服务器调用本地摄像头怎么调
    如果您要调用云服务器上的摄像头,需要先在本地安装相应的摄像头驱动程序,下载并解压缩到指定路径,例如c:DocumentsandSettingsAdobeAdobe Camera StudioQuickTime/v2lib。 然后在命令行中...
    99+
    2023-10-26
    摄像头 服务器
  • 云服务器调用本地打印机怎么调
    如果您需要在云服务器上使用本地打印机,可以使用以下步骤来调节其打印设置: 打开云端控制台。在 “文件”> “选项” 中,找到“打印服务”选项并单击。 在打开的打印服务配置界面中,选择“启动打印服务”选项。 在该界面中,单击“停止打印服务...
    99+
    2023-10-26
    打印机 服务器
  • 云服务器调用本地打印机怎么调整
    如果您要在云服务器上使用本地打印机,可以通过以下步骤调整它: 登录到云服务器。 选择“打印设置”。 在弹出的“打印设置”窗口中,选择需要使用本地打印机的打印文件,然后选择要使用哪个打印机。 您可以在“打印机”选项中调整打印选项的权限和打...
    99+
    2023-10-26
    打印机 服务器
  • 云服务器调用本地摄像头怎么调整
    如果您的云服务器上提供了视频共享服务,则可以通过在云服务器上调用本地摄像头来调整视频流。以下是一些方法: 将视频从摄像头中分离出来,并保存到本地文件夹中。 在云服务器上的视频共享界面上,找到要应用于本地的视频,并将其传输到本地电脑。 在...
    99+
    2023-10-26
    摄像头 服务器
  • 怎么在Java中调用方法
    这期内容当中小编将会给大家带来有关怎么在Java中调用方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、方法调用方法调用的唯一目的:确定要调用哪一个方法方法调用分为解析调用和分派调用二、非虚方法与虚方...
    99+
    2023-06-15
  • 云服务器调用本地打印机怎么调回来
    如果您想在云服务器上使用本地打印机,您可以按照以下步骤进行操作: 打开打印机电源并等待打印机正常工作。请确保您的电源适配器插在正确的位置,且电源指示灯亮着。 按下 "开始" 按钮,然后按照屏幕上的指示进行操作。 您可以在文本编辑器或打印...
    99+
    2023-10-26
    打印机 服务器
  • 云服务器调用本地打印机怎么调出来
    如果您的云服务器上已经有一个打印机,可以使用打印机面板上的“远程打印”设置来调出云服务器上的打印机。 首先,您需要确定打印机的本地端口号和远程端口号。打印机的本地端口号通常是指它在打印机面板上的“本地连接(LAN)”端口号,而远程端口号则...
    99+
    2023-10-26
    打印机 服务器
  • 云服务器调用本地摄像头怎么调出来
    如果您的云服务器上安装了相应的摄像头驱动程序,可以通过以下步骤调用本地摄像头: 查看本地摄像头设备:您应该在您的计算机上打开摄像头并找到您想使用的摄像头设备。如果您没有显示图像,则可能需要安装相应的驱动程序。 使用Windows API...
    99+
    2023-10-26
    摄像头 服务器
  • 云服务器调用本地摄像头怎么调回来
    如果云服务器调用本地摄像头的操作是由于本地摄像头已关闭或损坏而被禁用,您可以尝试以下操作: 手动启用本地摄像头: 如果您的云服务器可以自动检测和启用本地摄像头,则可能需要手动启用。在这种情况下,您需要在云平台或本地摄像头应用程序中注册该...
    99+
    2023-10-26
    摄像头 服务器
  • Java怎么调用groovy脚本
    这篇文章主要介绍“Java怎么调用groovy脚本”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java怎么调用groovy脚本”文章能帮助大家解决问题。使用方式GroovyShellGroovyS...
    99+
    2023-07-06
  • 云服务器调用本地摄像头怎么调回来的
    如果您要调用云服务器上的摄像头,通常需要先从本地摄像头中找到要回调到云服务器的图像,然后回调到云服务器进行保存。具体步骤如下: 打开终端并登录云服务器。 在摄像头界面中,单击“摄像头控制”选项。 在弹出的图像设置窗口中,点击“保存”按钮...
    99+
    2023-10-26
    摄像头 服务器
  • 云服务器调用本地摄像头怎么调出来的
    如果您的云服务器上没有安装任何监控摄像头软件,您可以尝试以下几种方法调出相机: 重启摄像头:重新启动云服务以清除所有软件设置和网络设置,然后重启您的摄像头。 检查网络连接:检查您的网络连接是否正常,并尝试重新加入云服务器。 检查应用程序...
    99+
    2023-10-26
    摄像头 服务器
  • 云服务器调用本地摄像头怎么调整画面
    如果您的云服务器上提供了视频摄像头功能,可以使用该功能来调整摄像头画面。以下是一些步骤和方法: 打开视频监控服务 如果您使用云服务器的本地摄像头服务,则可以将摄像头设置为自动侦测。打开视频监控服务以访问该服务并设置相应的选项,例如:启...
    99+
    2023-10-26
    摄像头 画面 服务器
  • 云服务器调用本地摄像头怎么调整时间
    如果您需要在云服务器上使用本地摄像头进行调整时间,您可以按照以下步骤进行操作: 打开摄像头并将其与本地存储在一起:在云服务提供商的网站上,您可以查看摄像头的使用说明和设置指南。请注意,本地存储可能需要一些额外的时间来准备与云服务器的连接...
    99+
    2023-10-26
    摄像头 服务器 时间
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作