STT 数据流处理-试一下合并后的格式

This commit is contained in:
2025-10-20 13:17:24 +08:00
parent 1d3394cb2d
commit 556ec0c268
4 changed files with 5 additions and 10 deletions

View File

@@ -120,7 +120,7 @@ public class ChatWebSocketHandler {
// 合并所有分片为完整语音数据 // 合并所有分片为完整语音数据
byte[] fullVoiceData = mergeFragments(fragments); byte[] fullVoiceData = mergeFragments(fragments);
// 生成唯一文件名 // 生成唯一文件名
String fileName = clientId + "_" + System.currentTimeMillis() + ".wav"; String fileName = clientId + "_" + System.currentTimeMillis() + ".webm";
String pathUrl = RuoYiConfig.getProfile()+VOICE_STORAGE_DIR + fileName; String pathUrl = RuoYiConfig.getProfile()+VOICE_STORAGE_DIR + fileName;
log.info("文件路径为:{}", pathUrl); log.info("文件路径为:{}", pathUrl);
log.info("文件流的大小为:{}",fullVoiceData.length); log.info("文件流的大小为:{}",fullVoiceData.length);

View File

@@ -10,9 +10,7 @@ import org.springframework.stereotype.Component;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
@@ -34,10 +32,7 @@ public class OpenAiStreamClient {
private String role; private String role;
// 定义作为分割点的标点符号集合 // 定义作为分割点的标点符号集合
private final Set<Character> punctuationSet = new HashSet<>() {{ private final String punctuationStr = "。,,,,\\.,\\?,!,;";
add('。'); add(''); add(''); add(''); // 中文标点
add('.'); add('?'); add('!'); add(';'); // 英文标点
}};
/** /**
* 发送流式请求 * 发送流式请求
@@ -118,7 +113,7 @@ public class OpenAiStreamClient {
.getStr("content"); .getStr("content");
if (content != null && !content.isEmpty()) { if (content != null && !content.isEmpty()) {
if(punctuationSet.contains(content)){ if(punctuationStr.contains(content)){
//说明有标点啦,直接返回 //说明有标点啦,直接返回
bufferStr.append(content); bufferStr.append(content);
listener.onMessage(bufferStr.toString()); listener.onMessage(bufferStr.toString());

View File

@@ -5,7 +5,7 @@ import java.io.*;
public class AudioToPCM { public class AudioToPCM {
public static void main(String[] args) { public static void main(String[] args) {
File inputFile = new File("/Users/wangxiangshun/Desktop/临时文件/110/111123456_1760930173334.wav"); // 输入音频文件 File inputFile = new File("/Users/wangxiangshun/Desktop/临时文件/110/3f7d2f6b-ea3d-4134-9abf-e8d8d30f91b7.wav"); // 输入音频文件
File outputFile = new File("/Users/wangxiangshun/Desktop/临时文件/110/output_pcm_audio1.pcm"); // 输出PCM格式文件 File outputFile = new File("/Users/wangxiangshun/Desktop/临时文件/110/output_pcm_audio1.pcm"); // 输出PCM格式文件
try { try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(inputFile); AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(inputFile);

View File

@@ -82,7 +82,7 @@ public class RealtimeTranscriptionMicrophone {
// String message = "{ \"type\": \"input_audio_buffer.append\", \"audio\": \"" + base64Audio + "\" }"; // String message = "{ \"type\": \"input_audio_buffer.append\", \"audio\": \"" + base64Audio + "\" }";
// webSocket.send(message); // webSocket.send(message);
// } // }
File outputFile = new File("/Users/wangxiangshun/Desktop/临时文件/110/output_pcm_audio.pcm"); // 输出PCM格式文件 File outputFile = new File("/Users/wangxiangshun/Desktop/临时文件/110/output_pcm_audio1.pcm"); // 输出PCM格式文件
ByteBuffer byteBuffer = ByteBuffer.wrap(FileUtils.readFileToByteArray(outputFile)); ByteBuffer byteBuffer = ByteBuffer.wrap(FileUtils.readFileToByteArray(outputFile));
byte[] bytes = new byte[byteBuffer.remaining()]; byte[] bytes = new byte[byteBuffer.remaining()];
//从缓冲区中读取数据并存储到指定的字节数组中 //从缓冲区中读取数据并存储到指定的字节数组中