Spaces:
Configuration error
Configuration error
updates
Browse files- Dockerfile +1 -1
- config/settings.py +11 -34
- requirements.txt +1 -0
- texttovoice/migrations/0001_initial.py +4 -4
- texttovoice/models.py +3 -4
- texttovoice/views.py +4 -8
Dockerfile
CHANGED
@@ -58,4 +58,4 @@ ENV COQUI_TOS_AGREED=1
|
|
58 |
RUN python manage.py migrate
|
59 |
|
60 |
# Use Django's built-in server to serve the app
|
61 |
-
CMD ["
|
|
|
58 |
RUN python manage.py migrate
|
59 |
|
60 |
# Use Django's built-in server to serve the app
|
61 |
+
CMD ["python3", "manage.py", "runserver", "0.0.0.0:7860"]
|
config/settings.py
CHANGED
@@ -13,7 +13,6 @@ https://docs.djangoproject.com/en/5.0/ref/settings/
|
|
13 |
|
14 |
import os
|
15 |
from pathlib import Path
|
16 |
-
import logging
|
17 |
|
18 |
|
19 |
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
@@ -52,7 +51,7 @@ INSTALLED_APPS = [
|
|
52 |
CORS_ALLOW_ALL_ORIGINS = True # If this is used then `CORS_ALLOWED_ORIGINS` will not have any effect
|
53 |
CORS_ALLOW_CREDENTIALS = True
|
54 |
CORS_ALLOWED_ORIGINS = [
|
55 |
-
'https://undetectable-voice-clone.hf.space',
|
56 |
]
|
57 |
|
58 |
REST_FRAMEWORK = {
|
@@ -73,29 +72,6 @@ SWAGGER_SETTINGS = {
|
|
73 |
}
|
74 |
}
|
75 |
}
|
76 |
-
LOGGING = {
|
77 |
-
'version': 1,
|
78 |
-
'disable_existing_loggers': False,
|
79 |
-
'handlers': {
|
80 |
-
'file': {
|
81 |
-
'level': 'DEBUG', # Choose the desired logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
82 |
-
'class': 'logging.FileHandler',
|
83 |
-
'filename': 'project.log', # Path to the log file
|
84 |
-
},
|
85 |
-
},
|
86 |
-
'loggers': {
|
87 |
-
'django': {
|
88 |
-
'handlers': ['file'],
|
89 |
-
'level': 'DEBUG', # Set the level for Django-related logs
|
90 |
-
'propagate': True,
|
91 |
-
},
|
92 |
-
'myapp': {
|
93 |
-
'handlers': ['file'],
|
94 |
-
'level': 'DEBUG', # Set the level for your app's logs
|
95 |
-
'propagate': True,
|
96 |
-
},
|
97 |
-
},
|
98 |
-
}
|
99 |
|
100 |
X_FRAME_OPTIONS = 'ALLOW-FROM https://huggingface.co/'
|
101 |
|
@@ -137,11 +113,19 @@ WSGI_APPLICATION = 'config.wsgi.application'
|
|
137 |
|
138 |
DATABASES = {
|
139 |
'default': {
|
140 |
-
'ENGINE': 'django.db.backends.
|
141 |
-
'NAME':
|
|
|
|
|
|
|
|
|
142 |
}
|
143 |
}
|
144 |
|
|
|
|
|
|
|
|
|
145 |
|
146 |
# Password validation
|
147 |
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
|
@@ -181,13 +165,6 @@ STATIC_URL = 'static/'
|
|
181 |
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
182 |
MEDIA_URL = '/media/'
|
183 |
|
184 |
-
# settings.py
|
185 |
-
|
186 |
-
MINIO_ENDPOINT = '64.176.199.162:9000'
|
187 |
-
MINIO_ACCESS_KEY = 'voice-clone'
|
188 |
-
MINIO_SECRET_KEY = 'voice-clone'
|
189 |
-
MINIO_SECURE = False # Change to True if using HTTPS
|
190 |
-
|
191 |
# Default primary key field type
|
192 |
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
|
193 |
|
|
|
13 |
|
14 |
import os
|
15 |
from pathlib import Path
|
|
|
16 |
|
17 |
|
18 |
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
|
|
51 |
CORS_ALLOW_ALL_ORIGINS = True # If this is used then `CORS_ALLOWED_ORIGINS` will not have any effect
|
52 |
CORS_ALLOW_CREDENTIALS = True
|
53 |
CORS_ALLOWED_ORIGINS = [
|
54 |
+
'https://undetectable-voice-clone.hf.space', "http://94.101.98.237:7860"
|
55 |
]
|
56 |
|
57 |
REST_FRAMEWORK = {
|
|
|
72 |
}
|
73 |
}
|
74 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
|
76 |
X_FRAME_OPTIONS = 'ALLOW-FROM https://huggingface.co/'
|
77 |
|
|
|
113 |
|
114 |
DATABASES = {
|
115 |
'default': {
|
116 |
+
'ENGINE': 'django.db.backends.postgresql',
|
117 |
+
'NAME': 'voice-clone',
|
118 |
+
'USER': 'postgres',
|
119 |
+
'PASSWORD': 'postgres', # Assuming you want to use the POSTGRES_PASSWORD from Docker Compose
|
120 |
+
'HOST': '94.101.98.237', # Use the service name defined in Docker Compose
|
121 |
+
'PORT': '5432',
|
122 |
}
|
123 |
}
|
124 |
|
125 |
+
MINIO_ENDPOINT = '94.101.98.237:9000' # Use the service name defined in Docker Compose
|
126 |
+
MINIO_ACCESS_KEY = 'voice-clone'
|
127 |
+
MINIO_SECRET_KEY = 'voice-clone'
|
128 |
+
MINIO_SECURE = False # Change to True if using HTTPS
|
129 |
|
130 |
# Password validation
|
131 |
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
|
|
|
165 |
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
166 |
MEDIA_URL = '/media/'
|
167 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
# Default primary key field type
|
169 |
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
|
170 |
|
requirements.txt
CHANGED
@@ -14,6 +14,7 @@ djangorestframework
|
|
14 |
drf-yasg
|
15 |
django-cors-headers
|
16 |
minio
|
|
|
17 |
|
18 |
# fastapi==0.70.0
|
19 |
# uvicorn==0.15.0
|
|
|
14 |
drf-yasg
|
15 |
django-cors-headers
|
16 |
minio
|
17 |
+
psycopg2-binary
|
18 |
|
19 |
# fastapi==0.70.0
|
20 |
# uvicorn==0.15.0
|
texttovoice/migrations/0001_initial.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
# Generated by Django 5.0.1 on 2024-02-
|
2 |
|
3 |
import django.db.models.deletion
|
4 |
from django.conf import settings
|
@@ -19,9 +19,9 @@ class Migration(migrations.Migration):
|
|
19 |
fields=[
|
20 |
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
21 |
('created_date', models.DateTimeField(auto_now_add=True)),
|
22 |
-
('text', models.
|
23 |
-
('speaker_wav', models.
|
24 |
-
('output_wav', models.
|
25 |
('language', models.CharField(default='en', max_length=2)),
|
26 |
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_created_by', to=settings.AUTH_USER_MODEL)),
|
27 |
],
|
|
|
1 |
+
# Generated by Django 5.0.1 on 2024-02-22 08:28
|
2 |
|
3 |
import django.db.models.deletion
|
4 |
from django.conf import settings
|
|
|
19 |
fields=[
|
20 |
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
21 |
('created_date', models.DateTimeField(auto_now_add=True)),
|
22 |
+
('text', models.TextField(default='In the quest for a sustainable future, renewable energy emerges as a beacon of hope')),
|
23 |
+
('speaker_wav', models.TextField()),
|
24 |
+
('output_wav', models.TextField()),
|
25 |
('language', models.CharField(default='en', max_length=2)),
|
26 |
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_created_by', to=settings.AUTH_USER_MODEL)),
|
27 |
],
|
texttovoice/models.py
CHANGED
@@ -13,12 +13,11 @@ class BaseModel(models.Model):
|
|
13 |
abstract = True
|
14 |
ordering = ["-created_date"]
|
15 |
class TextToSpeech(BaseModel):
|
16 |
-
text = models.
|
17 |
-
max_length=255,
|
18 |
default="In the quest for a sustainable future, renewable energy emerges as a beacon of hope"
|
19 |
)
|
20 |
-
speaker_wav = models.
|
21 |
-
output_wav = models.
|
22 |
language = models.CharField(
|
23 |
max_length=2, # Adjust the max length based on your language code requirements
|
24 |
default="en"
|
|
|
13 |
abstract = True
|
14 |
ordering = ["-created_date"]
|
15 |
class TextToSpeech(BaseModel):
|
16 |
+
text = models.TextField(
|
|
|
17 |
default="In the quest for a sustainable future, renewable energy emerges as a beacon of hope"
|
18 |
)
|
19 |
+
speaker_wav = models.TextField()
|
20 |
+
output_wav = models.TextField()
|
21 |
language = models.CharField(
|
22 |
max_length=2, # Adjust the max length based on your language code requirements
|
23 |
default="en"
|
texttovoice/views.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
from datetime import timedelta
|
2 |
import os
|
3 |
import uuid
|
4 |
-
import logging
|
5 |
import torch
|
6 |
from rest_framework import status
|
7 |
from rest_framework.response import Response
|
@@ -19,7 +18,6 @@ from .minio_utils import get_minio_client # Ensure this import matches your fil
|
|
19 |
|
20 |
minio_client = get_minio_client()
|
21 |
|
22 |
-
logger = logging.getLogger(__name__)
|
23 |
BUCKET_NAME = "voice-clone"
|
24 |
|
25 |
class TextToSpeechCreateView(CreateAPIView):
|
@@ -90,7 +88,7 @@ class TextToSpeechCreateView(CreateAPIView):
|
|
90 |
|
91 |
return Response(response_data, status=status.HTTP_201_CREATED)
|
92 |
except Exception as e:
|
93 |
-
|
94 |
return Response({"error": "An error occurred processing your request."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
95 |
finally:
|
96 |
# Ensure cleanup happens
|
@@ -116,10 +114,8 @@ class TextToSpeechCreateView(CreateAPIView):
|
|
116 |
try:
|
117 |
os.remove(file_path)
|
118 |
except Exception as e:
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
|
124 |
class TextToSpeechListView(ListAPIView):
|
125 |
serializer_class = TextToSpeechSerializerResponseWithURL
|
@@ -147,5 +143,5 @@ class TextToSpeechListView(ListAPIView):
|
|
147 |
presigned_url = minio_client.presigned_get_object(bucket, object_name, expires=timedelta(hours=1))
|
148 |
return presigned_url
|
149 |
except Exception as e:
|
150 |
-
|
151 |
return None
|
|
|
1 |
from datetime import timedelta
|
2 |
import os
|
3 |
import uuid
|
|
|
4 |
import torch
|
5 |
from rest_framework import status
|
6 |
from rest_framework.response import Response
|
|
|
18 |
|
19 |
minio_client = get_minio_client()
|
20 |
|
|
|
21 |
BUCKET_NAME = "voice-clone"
|
22 |
|
23 |
class TextToSpeechCreateView(CreateAPIView):
|
|
|
88 |
|
89 |
return Response(response_data, status=status.HTTP_201_CREATED)
|
90 |
except Exception as e:
|
91 |
+
print("Error due to ",e)
|
92 |
return Response({"error": "An error occurred processing your request."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
93 |
finally:
|
94 |
# Ensure cleanup happens
|
|
|
114 |
try:
|
115 |
os.remove(file_path)
|
116 |
except Exception as e:
|
117 |
+
print(e)
|
118 |
+
pass
|
|
|
|
|
119 |
|
120 |
class TextToSpeechListView(ListAPIView):
|
121 |
serializer_class = TextToSpeechSerializerResponseWithURL
|
|
|
143 |
presigned_url = minio_client.presigned_get_object(bucket, object_name, expires=timedelta(hours=1))
|
144 |
return presigned_url
|
145 |
except Exception as e:
|
146 |
+
print(e)
|
147 |
return None
|