From e9d2cfc3a134b00f4e98271fbee3838d1ccecbcc Mon Sep 17 00:00:00 2001
From: VirtuosoQ <2416050435@qq.com>
Date: 星期五, 26 四月 2024 14:59:30 +0800
Subject: [PATCH] FunASR java http client
---
funasr/frontends/whisper_frontend.py | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/funasr/frontends/whisper_frontend.py b/funasr/frontends/whisper_frontend.py
index 0598c61..acc99af 100644
--- a/funasr/frontends/whisper_frontend.py
+++ b/funasr/frontends/whisper_frontend.py
@@ -1,8 +1,8 @@
from typing import Tuple
import torch
import torch.nn as nn
-import whisper
-from whisper.audio import HOP_LENGTH, N_FFT, N_SAMPLES
+
+
from funasr.register import tables
from torch.nn.utils.rnn import pad_sequence
@@ -26,7 +26,8 @@
super().__init__()
assert fs == 16000
self.fs = fs
-
+ import whisper
+ from whisper.audio import HOP_LENGTH, N_FFT, N_SAMPLES
self.n_fft = N_FFT
self.win_length = N_FFT
self.hop_length = HOP_LENGTH
@@ -37,7 +38,13 @@
if whisper_model == "large-v3" or whisper_model == "large":
self.n_mels = 128
- self.mel_filters = whisper.audio.mel_filters
+ filters_path = kwargs.get("filters_path", None)
+ self.filters_path = filters_path
+ if filters_path is not None:
+ from funasr.models.sense_voice.whisper_lib.audio import mel_filters
+ self.mel_filters = mel_filters
+ else:
+ self.mel_filters = whisper.audio.mel_filters
self.do_pad_trim = do_pad_trim
if do_pad_trim:
self.pad_or_trim = whisper.pad_or_trim
@@ -60,8 +67,10 @@
# whisper deletes the last frame by default (Shih-Lun)
magnitudes = stft[..., :-1].abs() ** 2
-
- filters = self.mel_filters(audio.device, self.n_mels)
+ if self.filters_path is not None:
+ filters = self.mel_filters(audio.device, self.n_mels, self.filters_path)
+ else:
+ filters = self.mel_filters(audio.device, self.n_mels)
mel_spec = filters @ magnitudes
log_spec = torch.clamp(mel_spec, min=1e-10).log10()
@@ -85,6 +94,7 @@
batch_size = input.size(0)
feats = []
feats_lens = []
+ input = input.to(torch.float32)
for i in range(batch_size):
if self.do_pad_trim:
feat = self.pad_or_trim(input[i], self.pad_samples)
--
Gitblit v1.9.1