From 74d1c21ebb6b3b916904d95d13d289df23dcdedd Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Tue, 20 Aug 2024 18:06:46 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/ht-dev' into ht-dev
---
src/main/java/com/dji/sample/speak/util/AudioConverter.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 55 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/dji/sample/speak/util/AudioConverter.java b/src/main/java/com/dji/sample/speak/util/AudioConverter.java
new file mode 100644
index 0000000..d6bbd0b
--- /dev/null
+++ b/src/main/java/com/dji/sample/speak/util/AudioConverter.java
@@ -0,0 +1,55 @@
+package com.dji.sample.speak.util;
+
+import javax.sound.sampled.*;
+import java.io.File;
+import java.io.IOException;
+
+public class AudioConverter {
+
+ public static File convertToFile(File file) throws UnsupportedAudioFileException, IOException {
+ int channels =analyzeAudio(file);
+ if (channels != 1){
+ return convertAudio(file);
+ }
+ return file;
+ }
+ public static int analyzeAudio(File inputFile)
+ throws IOException, UnsupportedAudioFileException {
+ AudioInputStream audioStream = AudioSystem.getAudioInputStream(inputFile);
+ AudioFormat format = audioStream.getFormat();
+ int channels = format.getChannels();
+ audioStream.close();
+ return channels;
+ }
+ public static File convertAudio(File inputFile)
+ throws IOException, UnsupportedAudioFileException {
+ // 固定参数:声道数 1,采样率 16 kHz,位宽 16 bit
+ float sampleRate = 16000;
+ int channels = 1;
+ int bitDepth = 16;
+
+ AudioInputStream sourceStream = AudioSystem.getAudioInputStream(inputFile);
+
+ AudioFormat targetFormat = new AudioFormat(
+ AudioFormat.Encoding.PCM_SIGNED,
+ sampleRate,
+ bitDepth,
+ channels,
+ (bitDepth / 8) * channels,
+ sampleRate,
+ false
+ );
+
+ AudioInputStream convertedStream = AudioSystem.getAudioInputStream(targetFormat, sourceStream);
+
+ // 使用源文件名生成输出文件名
+ File outputFile = new File("converted_" + inputFile.getName());
+
+ AudioSystem.write(convertedStream, AudioFileFormat.Type.WAVE, outputFile);
+
+ sourceStream.close();
+ convertedStream.close();
+
+ return outputFile;
+ }
+}
--
Gitblit v1.9.3