Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
mariesig commited on
Commit ·
abae3b9
1
Parent(s): 466ccf8
update to aic-sdk 2.0
Browse files- aic_sdk.py +0 -45
- app.py +1 -2
- requirements.txt +1 -1
- sdk.py +52 -0
aic_sdk.py
DELETED
|
@@ -1,45 +0,0 @@
|
|
| 1 |
-
import numpy as np
|
| 2 |
-
from dotenv import load_dotenv
|
| 3 |
-
from aic import Model, AICModelType, AICParameter
|
| 4 |
-
import librosa
|
| 5 |
-
import soundfile as sf
|
| 6 |
-
|
| 7 |
-
load_dotenv()
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
class SDKParams:
|
| 11 |
-
def __init__(self, enhancement_level: float, sdk_key: str):
|
| 12 |
-
self.enhancement_level = enhancement_level
|
| 13 |
-
self.sdk_key = sdk_key
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
def process_file_sdk(input_path: str, output_path: str, sdk_params: SDKParams):
|
| 17 |
-
# Load audio
|
| 18 |
-
audio, sample_rate = librosa.load(input_path, sr=48000, mono=True)
|
| 19 |
-
audio = audio.reshape(1, -1) # Convert to planar format
|
| 20 |
-
output = np.zeros_like(audio)
|
| 21 |
-
load_dotenv()
|
| 22 |
-
with Model(
|
| 23 |
-
AICModelType.QUAIL_L,
|
| 24 |
-
license_key=sdk_params.sdk_key,
|
| 25 |
-
sample_rate=48000,
|
| 26 |
-
channels=1,
|
| 27 |
-
) as model:
|
| 28 |
-
model.set_parameter(AICParameter.ENHANCEMENT_LEVEL, sdk_params.enhancement_level)
|
| 29 |
-
# Process in chunks
|
| 30 |
-
chunk_size = model.optimal_num_frames()
|
| 31 |
-
for i in range(0, audio.shape[1], chunk_size):
|
| 32 |
-
chunk = audio[:, i : i + chunk_size]
|
| 33 |
-
# Pad last chunk if needed
|
| 34 |
-
if chunk.shape[1] < chunk_size:
|
| 35 |
-
last_chunk_size = chunk.shape[1]
|
| 36 |
-
padded = np.zeros((1, chunk_size), dtype=audio.dtype)
|
| 37 |
-
padded[:, : chunk.shape[1]] = chunk
|
| 38 |
-
chunk = padded
|
| 39 |
-
enhanced_chunk = model.process(chunk)
|
| 40 |
-
output[:, i : i + last_chunk_size] = enhanced_chunk[:, :last_chunk_size]
|
| 41 |
-
break
|
| 42 |
-
enhanced_chunk = model.process(chunk)
|
| 43 |
-
output[:, i : i + chunk_size] = enhanced_chunk[:, :chunk_size]
|
| 44 |
-
# Save result
|
| 45 |
-
sf.write(output_path, output.T, sample_rate)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
CHANGED
|
@@ -16,8 +16,7 @@ from constants import (
|
|
| 16 |
MINUTES_KEEP,
|
| 17 |
EXAMPLES,
|
| 18 |
)
|
| 19 |
-
from
|
| 20 |
-
from aic_sdk import SDKParams, process_file_sdk
|
| 21 |
from audio_tools import spec_image, mix_at_snr
|
| 22 |
import shutil
|
| 23 |
import tempfile
|
|
|
|
| 16 |
MINUTES_KEEP,
|
| 17 |
EXAMPLES,
|
| 18 |
)
|
| 19 |
+
from sdk import SDKParams, process_file_sdk
|
|
|
|
| 20 |
from audio_tools import spec_image, mix_at_snr
|
| 21 |
import shutil
|
| 22 |
import tempfile
|
requirements.txt
CHANGED
|
@@ -4,6 +4,6 @@ soundfile>=0.12.1
|
|
| 4 |
aiohttp>=3.9,<4
|
| 5 |
librosa>=0.10.1,<0.11
|
| 6 |
loguru~=0.7
|
| 7 |
-
aic-sdk
|
| 8 |
dotenv
|
| 9 |
resampy
|
|
|
|
| 4 |
aiohttp>=3.9,<4
|
| 5 |
librosa>=0.10.1,<0.11
|
| 6 |
loguru~=0.7
|
| 7 |
+
aic-sdk>=2.0.0
|
| 8 |
dotenv
|
| 9 |
resampy
|
sdk.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from platform import processor
|
| 2 |
+
|
| 3 |
+
import numpy as np
|
| 4 |
+
from dotenv import load_dotenv
|
| 5 |
+
import aic_sdk as aic
|
| 6 |
+
import librosa
|
| 7 |
+
import soundfile as sf
|
| 8 |
+
|
| 9 |
+
load_dotenv()
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
class SDKParams:
|
| 17 |
+
def __init__(self, enhancement_level: float, sdk_key: str, model_id: str = "quail-vf-1.1-l-16khz"):
|
| 18 |
+
self.enhancement_level = enhancement_level
|
| 19 |
+
self.sdk_key = sdk_key
|
| 20 |
+
self.model_path= aic.Model.download(model_id, "./models")
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def process_file_sdk(input_path: str, output_path: str, sdk_params: SDKParams):
|
| 24 |
+
# Load audio
|
| 25 |
+
audio, sr = librosa.load(input_path, sr=48000, mono=True)
|
| 26 |
+
audio = audio.reshape(1, -1) # Convert to planar format
|
| 27 |
+
output = np.zeros_like(audio)
|
| 28 |
+
load_dotenv()
|
| 29 |
+
model = aic.Model.from_file(sdk_params.model_path)
|
| 30 |
+
optimal_frames = model.get_optimal_num_frames(48000)
|
| 31 |
+
config = aic.ProcessorConfig(sample_rate=sr, num_channels=1, num_frames= optimal_frames,allow_variable_frames=False )
|
| 32 |
+
processor = aic.Processor(model, sdk_params.sdk_key, config)
|
| 33 |
+
proc_ctx = processor.get_processor_context()
|
| 34 |
+
#proc_ctx.set_parameter(aic.ProcessorParameter.EnhancementLevel, sdk_params.enhancement_level)
|
| 35 |
+
#proc_ctx.set_parameter(aic.ProcessorParameter.VoiceGain, 1.5)
|
| 36 |
+
#proc_ctx.set_parameter(aic.ProcessorParameter.Bypass, 0.0)
|
| 37 |
+
chunk_size = optimal_frames
|
| 38 |
+
for i in range(0, audio.shape[1], chunk_size):
|
| 39 |
+
chunk = audio[:, i : i + chunk_size]
|
| 40 |
+
# Pad last chunk if needed
|
| 41 |
+
if chunk.shape[1] < chunk_size:
|
| 42 |
+
last_chunk_size = chunk.shape[1]
|
| 43 |
+
padded = np.zeros((1, chunk_size), dtype=audio.dtype)
|
| 44 |
+
padded[:, : chunk.shape[1]] = chunk
|
| 45 |
+
chunk = padded
|
| 46 |
+
enhanced_chunk = processor.process(chunk)
|
| 47 |
+
output[:, i : i + last_chunk_size] = enhanced_chunk[:, :last_chunk_size]
|
| 48 |
+
break
|
| 49 |
+
enhanced_chunk = processor.process(chunk)
|
| 50 |
+
output[:, i : i + chunk_size] = enhanced_chunk[:, :chunk_size]
|
| 51 |
+
# Save result
|
| 52 |
+
sf.write(output_path, output.T, sr)
|