En efecto en un ordenador con sistema operativo Linux en cualquier de sus variantes como Ubuntu, Lubuntu ,Fedora, etc. puede que copiando archivos grandes hacia una unidad extraible USB termine dando error con el típico mensaje «Error splicing file:file too large«.
Afortunadamente entender el motivo del error es sencillo ,pues generalmente el problema se debe a que el disco de destino (es decir en la unidad extraible en el que desea copiar el archivo) está formateado con el sistema de fichero FAT32 , el cual tiene un límite de tamaño de archivo de aproximadamente 4GB, por lo que efectivamente Linux cuando intenta copiar sobre una unidad destino formateada en fat32 el so. empieza copiando hasta que llega aproximadamente a los 4GB , momento en el cual no puede continuar, pues el sistema de ficheros no lo permite, terminando dando error y abortándose la copia.
Curiosamente según el tipo de fichero que sea ,es posible que incluso abortando la copia con el mensaje Error splicing file:file too large , en caso de copias de ficheros de vídeo ( por ejemplo en formato mkv) , a pesar de esto, incluso con el error puedan ser reproducibles parcialmente ( es decir, sin poder reproducirse hasta su totalidad).
Afortunadamente para resolver este problema, la solución es bien sencilla pues bastara en volver a formatear su disco de destino a EXT3, EXT4 o NTFS.
Mientras que FAT, FAT32 y exFAT se utilizan en memorias USB y tarjetas SD , NTFS es utilizado sobre todo por discos duros, lo cual no significa que ntfs no deba usarse también en unidades extraibles USB: todo lo contrario ,pues por las razones que vamos a ver , ntfs tambien deberia ser la mejor opción para unidades extraibles usb.
NTFS (New Technology File System) es el sistema de archivos que Windows utiliza por defecto, (de hecho windows sólo puede ser instalado en una unidad con este sistema),Su adaptación no es casual pues , ntfs conlleva múltiples ventajas:
Como hemos comentado su límite de tamaño de archivos es de 16 TB, ( los volúmenes pueden llegar a tener 264 TB cada uno)
Se pueden configurar los permisos de acceso a un archivo (vital para un sistema operativo).
Permite cifrar archivos.
Permite nombres de archivos largos.
Se recupera más fácilmente de errores si el ordenador se cuelga
Vemos pues para soslayar el problema «Error splicing file:file too large» y la unidad destino esta formateada en otro formato , tendremos que formatear en NTFS pues así no habrá problemas a la hora de copiar estos ficheros.
FORMATEO DESDE WINDOWS
En realidad formatear en NTFS un unidad USB con Windows 10 es muy fácil:
Pinche con el botón DERECHO del ratón en el menú Inicio de Windows y elige Explorador de archivos.
En la ventana que se abre haga clic a la izquierda en Este equipo.
A la derecha verá las unidades de disco duro, particiones, discos o pendrives USB o CD/DVD que tenga tu PC. Seleccione la unidad que quiere formatear pinchando en ella con el botón izquierdo. Luego haz clic encima con el botón DERECHO y elige Formatear. (!IMPORTANTE !: -Es obvio que debe elegir con mucho cuidado la unidad pues formatearla borrará por completo todo lo que haya en ella.
Al elegir la opción de formateo se abre su ventana de propiedades.Defina así las opciones siguientes que incluye:
Sistema de archivos:Pincha en la lista desplegable de abajo y elija NTFS.
Tamaño de unidad de asignación. Lo normal es que deba mantener el tamaño que te indique por defecto la ventana de formateo.
Etiqueta del volumen :Escriba un nombre que describa lo que hay o habrá en ese disco o USB. No es una opción obligatoria pero sí recomendable.
Opciones de formato:Desactive la casilla de Formato rápido haciendo clic en ella. Así obligara a que Windows chequee el disco o USB e intente reparar de forma automática posibles errores que tenga por lo que puede ahorrarle problemas futuros o hasta pérdidas de datos. Por cierto mantener el formato rápido acelera el proceso pero se salta la comprobación del disco o USB.
Finalmente pulse Iniciar cuando acabes de configurar esas opciones. Confirme con Aceptar el aviso de que se borrará todo lo que haya en esa unidad.
El formateo tardara más o menos dependiendo del tamaño de la unidad seleccionada, la velocidad de su PC y si ha elegido o no la opción rápida. Acepte y cierra la ventana cuando termine.
FORMATEO DESDE LINUX
Ahora veremos como soslayar el problema » Error splicing file:file too large» y la unidad destino esta formateada en otro formato , formateando en NTFS desde el propio Linux para que no haya problemas a la hora de copiar ficheros de mas de 4GB
Lo primero que tenemos que tener claro a la hora de formatear una unidad es la ruta en la que se encuentra en el sistema.
Para ver que dispositivo es el que vamos a usar escribimos en Terminal (Abrir Terminal presionando Ctrl + Alt + T) :
Para eso, solo tendremos que escribir en el Terminal el comando:
df
Este comando nos mostrará todos las particiones y discos que tiene actualmente el ordenador conectados al sistema. Como podremos observar, los sistemas basados en Ubuntu 16.04 asignan cómo nombre de partición de la siguiente forma sdaX donde la X es un número de partición, por lo que si tenemos una unidad USB conectado , el nombre será muy similar a sdaX ( por e ejemplo sdb3).
Una vez hayamos encontrado la memoria USB desde el terminal, tenemos que desmontarlo del sistema para que podamos formatearlo. Para realizar esta tarea tendremos que ejecutar el siguiente comando:
sudo umount /dev/sdb3
Ahora ya lo tenemos preparado para formatear. Por lo que tendremos que escribir la siguiente línea de código en el terminal.
carlos@carlos-compaq-nx9030-PG572ET-ABE:~$ sudo umount /dev/sdb1 [sudo] password for carlos:
carlos@carlos-compaq-nx9030-PG572ET-ABE:~$ sudo mkfs.ntfs /dev/sdb1 Cluster size has been automatically set to 4096 bytes. Initializing device with zeroes: 41%100% – Done. Creating NTFS volume structures. mkntfs completed successfully. Have a nice day. carlos@carlos-compaq-nx9030-PG572ET-ABE:~$
No esta de mas recordar que debe cambiar la identificación del dispositivo USB en los comandos anteriores o desde el interfaz grafico ,En el ejemplo en un viejo portatil hp con Lubuntu se ha usado sdb3 , pero no necesariamente sera el mismo identificador que tengan sus unidades.
Como puedes observar, es un proceso muy sencillo pero tiene las complicaciones de saber que es lo que hace cada cosa y cual es la dirección correcta que queremos formatear, ya que si nos equivocamos puede ser fatal para nuestro sistema operativo.
Gracias a que se liberó el SDK del Google Assistant , ya se puede usar Google Home en Español entre otros nuevos idiomas con cualquier hw que los permita ! Así que ahora es posible montar nuestro propio Google Assistant en una Raspberry Pi, en pocos minutos, con un micrófono y un altavoz, tendrá a una Raspberry Pi lista para atender sus peticiones!
Ideal para ponerla en el salón o cualquier sitio escondida, con un buen micrófono omnidireccional, podremos hacerle consultas en nuestro propio idioma y medianamente nos las esquivará correctamente , Por cierto a parte del Español, también soporta Inglés, Alemán, Francés, Italiano y Japonés.
El proyecto se llama AIY que resulta de la mezcla de AI (inteligencia artificial en sus siglas en inglés, Artificial Intelligence) y DIY (hazlo tú mismo, en sus siglas en inglés, Do it Yourself).
Echemos un vistazo a lo que necesitamos .
Raspberry Pi 3 con fuente de alimentación y tarjeta MicroSD
Micrófono USB. Se puede utilizar el micrófono incluido en algunas cámaras web para las pruebas. La gran ventaja del mini micrófono es la potabilidad del prototipo pero cualquier producto similar hará el trabajo de forma satisfactoria.
Altavoces con entrada de audio de 3,5 mm Aunque inclusive unos auriculares de cable son más que suficiente para realizar las pruebas, idealmente podremos contar con algún tipo de altavoz equipado con conector de 3.5mm para obtener una mejor experiencia de usuario
Ratón y teclado USB
Instalando el SO
Para instalar el software necesitamos nueva imagen descargada a partir del sitio oficial Raspbian ,y flashearla en la microSD con un ordenador:
Una vez descargada y descomprimida la imagen correspondiente en su ordenador siga los siguientes pasos:
Inserte la tarjeta SD en el lector de tarjetas SD de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, tal como G :, mirando en la columna izquierda del Explorador de Windows.
Puede utilizar la ranura para tarjetas SD, si usted tiene uno, o un adaptador SD barato en un puerto USB.
Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip; puede ejecutar esto desde una unidad USB.
Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager; puede que tenga que ejecutar esto como administrador. Haga clic derecho en el archivo y seleccione Ejecutar como administrador.
Seleccione el archivo de imagen que ha extraído anteriormente de Raspbian.
Seleccione la letra de la unidad de la tarjeta SD en la caja del dispositivo. Tenga cuidado de seleccionar la unidad correcta; si usted consigue el incorrecto puede destruir los datos en el disco duro de su ordenador! Si está utilizando una ranura para tarjetas SD en su ordenador y no puede ver la unidad en la ventana Win32DiskImager, intente utilizar un adaptador SD externa.
Haga clic en Escribir y esperar a que la escritura se complete.
Salir del administrador de archivos y expulsar la tarjeta SD.
Ya puede insertar la SD en su Raspberry Pi en el adaptador de micro-sd , conectar un monitor por el hdmi , conectar un teclado y ratón en los conectores USB, conectar la con un cable ethernet al router conectividad a Internet y finalmente conectar la alimentación para comprobar que la Raspeberry arranca con la nueva imagen
Cuando acabamos de flashear la tarjeta la colocamos en la Raspi y ya podemos empezar. Para arrancar la Raspberry Pi 3 con el Voice Kit vamos a necesitar un monitor con cable HDMI y un teclado con ratón. Conectamos todo y le damos energía a la Raspi.
El primer inicio del sistema puede tardar varios minutos. El sistema que corre en la Raspberry Pi es una versión de Debian modificada especialmente para este dispositivo y que se llama Raspbian. Debian es una de las distribuciones más extendidas de GNU/Linux y en la que se basan distribuciones tan famosas como Ubuntu.
Una vez tengamos el escritorio activo, arriba a la derecha vamos a poder conectarnos a nuestra red Wi-Fi entre los símbolos del Bluetooth y del volumen.
Respecto al micrófono usb
Dado el precio y el tamaño, se necesita un micrófono funcional que sea capaz de captar voces cercanas o grandes sonidos pero sin gastarse una fortuna requiriéndose un micrófono usb que sea reconocido y funcione con Raspbian en una Raspberry Pi3( por ejemplo el modelo RRunzfon de kinobo)
Este tipo de micrófonos no son de alta fidelidad de modo que cuando escuche las reproducciones está claro que hay mucha estática a menos que esté hablando directamente con el micrófono, pero para este proyecto lo importante es que sea capaz de funcionar para el reconocimiento de voz utilizando la compilación Alexa Raspberry Pi.
Es interesante instalar la activación “siempre encendida” para no tener que presionar un botón para activarla, y pero dadas las características de este modesto micrófono solo funcionara si está cerca de este
Dado el tamaño y el precio, esta es una de las maneras más fáciles de agregar un micrófono por menos de $ 10, pero si está esperando un audio de alta calidad, es mejor que busque otras opcion. Para aquellos que buscan un micrófono decente para uso diario, existen mejores opciones en cuanto a calidad de sonido. (lo que hace que este micrófono sea genial es lo pequeño y económico que es)
Para las personas que buscan probar Google Assistant con Raspberry Pi, este micrófonono funciona con RPI v1, pero sí funciona con RPI v3 de fábrica. Cuando lo conecta al puerto USB, se detecta automáticamente y puede verlo en la salida “arecord -l“.
Bajo el sistema operativo Linux, parece que el sonido grabado es un poco bajo. Es posible que necesite normalizar (aumentar la ganancia) en el sonido usando un programa como mp3gain, ffmpeg, sox, etc. o mejor aún aumentar la ganancia en el receptor usando pulseaudio. Si eleva el volumen a un nivel alto, obtendrá una gran cantidad de estática, que es de esperar.
Prueba de sonido
Usaremos una Raspberry Pi 3 con Raspbian instalado y actualizado, lo primero será verificar que el audio nos funciona bien, tanto el del micrófono como los altavoces por donde queremos sacar el sonido ,para ello editamos nuestro fichero de configuración de audio ‘~/.asound’ y especificamos el micrófono que estamos usando, en este caso un USB específico, pero también podríamos usar el micro de una webcam, así como el audio que me lo saque por la predeterminada
Antes de continuar pues debemos configurar el sistema de audio en la Raspberry Pi.
Encontrar los dispositivos de grabación y reproducción.
Coloque el micrófono USB en la lista de dispositivos de hardware de captura. Anote el número de tarjeta y el número de dispositivo.
arecord -l
Coloque el altavoz en la lista de dispositivos de hardware de reproducción. Anote el número de tarjeta y el número de dispositivo. Tenga en cuenta que el conector de 3,5 mm se etiqueta típicamente o (no). Analogbcm2835 ALSAbcm2835 IEC958/HDMI
aplay -l
Crear un nuevo archivo llamado .asoundrec en el directorio home(/home/pi). Asegúrese de que tiene las definiciones de derecho esclavo para micrófono y altavoz; Utilice la configuración a continuación pero cambie <card number> y <device number> con el número que anotó en el paso anterior. Hacer esto para ambos y..asoundrc/home/pi<card number><device number>pcm.micpcm.speaker
Verificar esa grabación y la reproducción del ejemplo:
Ajustar el volumen de reproducción.
alsamixer
Pulse la tecla de flecha hacia arriba para ajustar el volumen de reproducción nivel a alrededor de 70.
Reproducir un sonido de prueba (se trata de una persona que habla). Presione Ctrl + C al hecho. Si no se oye nada cuando se ejecuta esto, Compruebe la conexión del altavoz.
Compruebe la grabación por reproducirlo. Si no se oye nada, puede que necesite registrar el volumen de grabación. alsamixer
aplay --format=S16_LE --rate=16000 out.raw
Si están trabajando la grabación y reproducción, ya se ha configurado el audio. Si no es así, verifique que el micrófono y el altavoz están correctamente conectados. Si no es el problema, intente un diferentes micrófono o altavoz.
Tenga en cuenta que si tiene un monitor HDMI y un altavoz de jack de 3,5 mm conectado, usted puede reproducir audio por cualquiera de los dos. Ejecute el siguiente comando:
sudo raspi-config
Ir a Opciones avanzadas > Audio y seleccione el dispositivo de salida deseada.
Activación servicio
Para activar el servicio nos iremos a la consola de las Acciones de Google, nos validaremos con una cuenta de Google válida y crearemos un nuevo proyecto de Google Cloud Platform,.Con la API de Google Assistant instalada en nuestra Raspberry accederemos para realizar consultas y el proyecto nos mostrará los datos sobre los consumos.
En primer lugar nos iremos a la consola de las Acciones de Google, en https://console.actions.google.com, deberemos validarnos con una cuenta de Google válida y crear un nuevo proyecto de Google Cloud Platform, para ello pulsamos en “Add/Import project»
Si no tiene ningún proyecto creado, nos aparece una ventana para aceptar las condiciones de servicio. Es importante en este punto no olvidar si queremos cambiar el idioma a español para las Acciones así como seleccionar nuestro País,
Tenemos que tener en cuenta que el máximo de proyectos gratuitos es 3 ,por lo que no podremos añadir nuevos, así que una opción es eliminar proyectos antiguos o incluso seleccionar alguno de estos proyectos antiguos de Google App Engine como origen de automatización ( ese es el caso de nuestro ejemplo «soloelectronicossalva»)
En caso de no tener ningún proyecto en la nube de Google ,deberemos indicar el nombre del Proyecto (recordar que aparecerá un combo si tiene ya varios proyectos creados)
Ahora tenemos que habilitar la API de Google Assistant API para nuestro proyecto , por lo que nos iremso a https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview y daremos al boton de Habilitar . Si no estamos situados en nuestro proyecto seleccionamos del combo nuestro proyecto y pulsamos en “Habilitar”,(API > Enable API > Google Assistant > Enable)
Y al pulsar el botón quedara habilitado el API de Google Assistant para nuestro proyecto
Observe que no es completamente gratuito, estando limitado a 500 peticiones al día con un máximo de 60 peticiones/minuto , aspectos que podemos estudiar en el menú de Cuotas
Ahora ya podríamos ir a registrar nuestro dispositivo! Vamos de nuevo a la Consola, en https://console.actions.google.com/ Ir a “Device registration” > “Register Model” y lo crearíamos
En caso de haber importado un proyecto que ya teníamos, el proceso es diferente, pues repetiremos las dos opciones primeras de Add/Import , pero esta vez en el menú que nos aparece seleccionaremos Device registration” > “Register Model” y lo creariamos (la url seria del tipo https://console.actions.google.com/u/0/project/proyecto_importado/deviceregistration/)
En ambos casos, llegado a este punto, pulsaremos al botón «Device registration«
Tendremos que ponerle un nombre o ‘Product Name’ (que anotaremos), un nombre del fabricante o ‘Manufacter Name’ y seleccionamos si queremos algún tipo de dispositivo, que en nuestro caso al ser una raspberry Pi 3 lo dejaremos en ‘Auto’, pulsamos en “Register Model”,
Nos toca ahora descargar el fichero con los credenciales de acceso al servicio de Google Assistant, pulsamos en “Download OAuth 2.0 credentials” y los guardamos en una ruta de nuestro ordenador que nos sea fácil de recordar
Ahora copiaremos dichos archivo a la Raspberry Pi en la ruta /home/pi,
En este ultimo paso , es interesante las opciones que nos ofrece:
Brillo: Este rasgo cubre cómo controlar el brillo de un dispositivo. La configuración de brillo absoluto se encuentra en un rango normalizado de 0 a 100 (las luces individuales pueden no ser compatibles con todos los puntos del rango según su configuración de LED).
ColorSpectrum Este rasgo pertenece a cualquier dispositivo que pueda establecer un espectro de color. Esto se aplica a las bombillas de color «completas» que toman rangos de color RGB. Las luces pueden tener cualquier combinación de ColorSpectrum y ColorTemperature, las luces de acento y las tiras de LED solo pueden tener Spectrum, mientras que algunas bombillas de lectura solo tienen Temperatura. Las bombillas básicas, o luces tontas en enchufes inteligentes, no tienen ninguno.
Temperatura del color: Este rasgo pertenece a cualquier dispositivo que pueda ajustar la temperatura del color. Esto se aplica a las bombillas de «calor» que tienen un punto de color en Kelvin. Esta es generalmente una modalidad separada de ColorSpectrum, y es posible que haya puntos blancos disponibles a través de la temperatura que Spectrum no pueda alcanzar. Según los rasgos disponibles, Google puede elegir el modo apropiado para usar según la solicitud y el tipo de luz (por ejemplo, si las luces de la sala de estar están en blanco podrían enviar comandos de temperatura a algunas bombillas y comandos de espectro a tiras de LED).
Muelle: Este rasgo está diseñado para dispositivos auto-móviles que pueden ser ordenados a regresar para la carga. En general, estas son aspiradoras robóticas actualmente, pero esto también se aplicaría a algunos drones, robots de entrega y otros dispositivos futuros.
Encendido apagado :La funcionalidad básica de encendido y apagado para cualquier dispositivo que tenga activado y desactivado el binario, incluidos enchufes e interruptores, así como muchos dispositivos futuros. Tenga en cuenta que los termostatos tienen una configuración de ‘modo’ expandida, que es un interruptor de múltiples vías que incluye encendido y apagado, pero los termostatos generalmente no tienen esta característica.
StartStop :Este rasgo cubre iniciar y detener el dispositivo. Iniciar y detener un dispositivo cumple una función similar para encenderlo y apagarlo. Los dispositivos que heredan este rasgo funcionan de manera diferente cuando se encienden y cuando se inician. Algunas lavadoras, por ejemplo, pueden encenderse y modificar sus configuraciones antes de comenzar a operar.
Ajuste de temperatura : Este rasgo cubre el manejo tanto del punto de temperatura como de los modos.
Para nuestro ejemplo no seleccionaremos ninguna de esta opciones por el momento y pulsaremos «SaveTraits«
Nos debe aparece ahora al entrada con la configuración definida:
Si pinchamos en la entrada podemos cambiar algunos de los parámetros ya definidos ( no olvidar darle al botón de «save«)
Grabamos el dispositivo que acabamos de registrar, pulsando en “SAVE”,
Configruacion de la Raspberry Pi
Bien, ahora en la Raspberry Pi configuraremos el entorno virtual de Python para aislar el SDK y sus dependencias de los paquetes Python del sistema, nos escogemos la opción de Python 3:
Please visit this URL to authorize this application: ....
Copiamos la URL y vamos a ella con un navegador que esté validado con nuestra cuenta de Google. Tras permitir el acceso o nos dará un código de autenticación que debemos pegar en la shell.
Y ahora, ya estamos listos para probar un ejemplo!
En el mismo entorno virtual, ejecutamos el siguiente comando indicando nuestro ID de Proyecto y nuestro ID de modelo, En caso de no haber anotando estos datos , ambos estan en la Consola de Actions de Google buscando en las opciones generales del proyecto y del dispositivo.
Si esta todo OK ejecutamos el siguiente comando y quedará listo para que hablemos con el Assistantar:
Por cierto, para cambiar el idioma de nuestro Asistente, lo haremos directamente con nuestro teléfono móvil, con la app del Assistant que supongo la tendréis instalada (y si no os la instaláis :P, la abrís, pulsamos arriba en la brújula, y en la siguiente pantalla en Explorar debemos ir a “Ajustes”,
En Ajustes debemos buscar en Dispositivos el dispositivo que hemos registrado antes, lo seleccionamos, y ahí ya le podremos dar acceso a más datos nuestros a los señores de Google o seleccionar el idioma que queremos para interactuar con el Assistant!
MEJORA DEL MICRÓFONO
Finalmente, dependiendo de la calidad de tu micrófono, notará que tiene algunos problemas a la hora de escucharle. En lugar de gritar cada vez que quiera usarlo, lo que haremos será regular el micrófono mediante la línea de comandos una vez más.
Introduzca en la termina ssh el siguiente comando:
alsaixer
Pulsee F6 para seleccionar un USB diferente. Use, las flechas para seleccionar tu micrófono.
Usa las flechas para aumentar el volumen de captura.
Cuando esté satisfecho con el volumen, pulse ESC para salir.
Escriba el siguiente comando para hacer permanentes los cambios.
sudo alsactl store
Ahora será capaz de comunicarte con su Echo casero hablando de manera normal en lugar de gritando. Desde esta misma pantalla también se puede cambiar el volumen por defecto si lo necesitara.
Tenemos el servicio montado bajo una Raspberry Pi, si volvemos a ejecutar el ejemplo anterior estará el Asistente en nuestro idioma pero tendremos que constantemente pulsar Enter o decir ‘OK, Google’ independientemente de los ejemplos que tenemos para interactuar.
Si no nos interesa que el micrófono esté siempre escuchando y así también evitar la necesidad de decir ‘OK Google’ todo el rato, mediante un script en c-shell podemos iniciar o detener el Assistant
Debe estar conectado para enviar un comentario.