同步操作将从 Adam/SmartJavaAI 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import ai.djl.util.JsonUtils;import cn.smartjavaai.common.entity.Language;import cn.smartjavaai.common.entity.R;import cn.smartjavaai.speech.asr.config.AsrModelConfig;import cn.smartjavaai.speech.asr.entity.AsrResult;import cn.smartjavaai.speech.asr.entity.AsrSegment;import cn.smartjavaai.speech.asr.entity.RecParams;import cn.smartjavaai.speech.asr.entity.WhisperParams;import cn.smartjavaai.speech.asr.enums.AsrModelEnum;import cn.smartjavaai.speech.asr.model.VoskRecognizer;import cn.smartjavaai.speech.asr.model.WhisperRecognizer;import io.github.givimad.whisperjni.WhisperFullParams;import io.github.givimad.whisperjni.WhisperSamplingStrategy;import lombok.extern.slf4j.Slf4j;import ws.schild.jave.Encoder;import ws.schild.jave.EncoderException;import ws.schild.jave.InputFormatException;import ws.schild.jave.MultimediaObject;import ws.schild.jave.encode.AudioAttributes;import ws.schild.jave.encode.EncodingAttributes;import ws.schild.jave.info.AudioInfo;import ws.schild.jave.info.MultimediaInfo;import java.io.*;/*** @author dwj* @date 2025年8月1日*/@Slf4jpublic class Test {public static void main(String[] args) {// System.out.println("TMPDIR = " + System.getProperty("java.io.tmpdir"));////// System.setProperty("io.github.givimad.whisperjni.libdir","/Users/wenjie/smartjavaai_cache/whisper");// WhisperRecognizer whisperRecognizer = new WhisperRecognizer();// AsrModelConfig config = new AsrModelConfig();// config.setModelEnum(AsrModelEnum.WHISPER);//// config.setModelPath("/Users/wenjie/Downloads/ggml-medium.bin");// config.setModelPath("/Users/wenjie/Documents/develop/model/speech/ggml-medium.bin");// whisperRecognizer.loadModel(config);// WhisperParams params = new WhisperParams();// WhisperFullParams params1 = new WhisperFullParams(WhisperSamplingStrategy.BEAN_SEARCH);//// params1.detectLanguage = true;// params1.language = Language.ZH.getCode();// //params1.translate = true;// params1.initialPrompt = "语音模型";// params.setParams(params1);//// params1.printTimestamps = true;// params1.printRealtime = true;// //params.setLanguage(Language.ZH);// R<AsrResult> result = whisperRecognizer.recognize("/Users/wenjie/Downloads/友谊大街.m4a",params);// if (result.isSuccess()){// System.out.println("结果:" + JsonUtils.toJson(result.getData()));// }else{// System.out.println(result.getMessage());// }//// while (true){// try {// Thread.sleep(10);// } catch (InterruptedException e) {// throw new RuntimeException(e);// }// }testVosk();// testConvert();}public static void testVosk(){System.load("/Users/wenjie/Downloads/vosk-arrch64-dylib-main/libvosk.dylib");VoskRecognizer voskRecognizer = new VoskRecognizer();AsrModelConfig config = new AsrModelConfig();config.setModelEnum(AsrModelEnum.VOSK);config.setModelPath("/Users/wenjie/Documents/develop/model/speech/vosk-model-cn-0.22");voskRecognizer.loadModel(config);R<AsrResult> result = voskRecognizer.recognize("/Users/wenjie/Documents/idea_workplace/SmartJavaAI/examples/speech-examples/src/main/resources/lff_zh.mp3");if (result.isSuccess()){System.out.println("结果:" + JsonUtils.toJson(result.getData()));}else{System.out.println(result.getMessage());}// while (true){// try {// Thread.sleep(10);// } catch (InterruptedException e) {// throw new RuntimeException(e);// }// }}public static void testConvert(){getAudioFormatConversionIns("/Users/wenjie/Downloads/中国建设银行(包头当代支行).m4a","/Users/wenjie/Downloads/test1.wav","wav");}/*** 音频格式转换** @param sourceFilePath* @param targetFilePath* @param format wav/mp3/amr* @return*/public static byte[] getAudioFormatConversionBytes(String sourceFilePath,String targetFilePath,String format) {InputStream fis = null;ByteArrayOutputStream bos = null;byte[] bytes = null;try {File sourceFile = new File(sourceFilePath);if (sourceFile.isFile()) {File targetFile = new File(targetFilePath);// 音频格式转换audioFormatConversion(sourceFile, targetFile, format);fis = new FileInputStream(targetFile);bos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int bytesRead;while ((bytesRead = fis.read(buffer)) != -1) {bos.write(buffer, 0, bytesRead);}bytes = bos.toByteArray();}} catch (Exception e) {log.error("音频格式转换异常:" + e.getMessage(), e);return null;} finally {try {if (fis != null) {fis.close();}if (bos != null) {bos.close();}} catch (IOException e) {log.error("音频格式转换资源关闭异常:" + e.getMessage(), e);}}return bytes;}/*** 音频格式转换** @param sourceFilePath* @param targetFilePath* @param format wav/mp3/amr* @return*/public static InputStream getAudioFormatConversionIns(String sourceFilePath, String targetFilePath, String format) {try {File sourceFile = new File(sourceFilePath);if (sourceFile.isFile()) {File targetFile = new File(targetFilePath);// 音频格式转换audioFormatConversion(sourceFile, targetFile, format);return new FileInputStream(targetFile);}} catch (Exception e) {log.error("音频格式转换异常:" + e.getMessage(), e);}return null;}/*** 音频格式转换* @param source 源音频文件* @param target 输出的音频文件* @param format wav/mp3/amr*/public static void audioFormatConversion(File source,File target,String format) {try {//Audio AttributesAudioAttributes audio = new AudioAttributes();switch (format) {case "wav":audio.setCodec("pcm_s16le");break;case "mp3":audio.setCodec("libmp3lame");break;case "amr":audio.setCodec("libvo_amrwbenc");break;default:log.error("音频格式不合法!");return;}audio.setBitRate(16000);audio.setChannels(1);audio.setSamplingRate(16000);//Encoding attributesEncodingAttributes attrs = new EncodingAttributes();attrs.setOutputFormat(format);attrs.setAudioAttributes(audio);//EncodeEncoder encoder = new Encoder();encoder.encode(new MultimediaObject(source), target, attrs);} catch (Exception e) {log.error("音频格式转换异常:" + e.getMessage(), e);}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。